Indent line ranges with sed
Let's say you'd like to selectively indent line ranges in a file and would like to preview before making changes. Here's one way to do it with sed.
Before:
cat indent.test
#!/bin/bash
FooBar()
{
for l in a b c; do
echo letter $l
done
}
I'd like to indent the code inside the function using a single space (e.g. insert a leading space in lines 5, 6 and 7).
Preview:
sed '5,7 s/^/ /' indent.test | sed -n 3,8p
FooBar()
{
for l in a b c; do
echo letter $l
done
}
Note that I'm piping replacement sed to sed that will just print lines 3-8 (useful if you're working with a large file and don't want to scroll through hundreds of lines to preview the code your changes).
Apply:
sed -i '5,7 s/^/ /' indent.test
After:
cat indent.test
#!/bin/bash
FooBar()
{
for l in a b c; do
echo letter $l
done
}
Leave a comment