$ cat input.txt
12
34
56
78
The following are different ways to do the same thing:
- sed
$ sed 's/^/ /' input.txt
12
34
56
78
s/^/ / searches for the beginning of a line (^), and "replaces" that with 5 spaces.
- awk
$ awk '{ print " " $0 }' input.txt
12
34
56
78 - perl
$ perl -pe 's/^/ /' input.txt
12
34
56
78
To indent a range of lines, say lines 1 to 3, inclusive:
- sed
$ sed '1,3s/^/ /' input.txt
12
34
56
78
Note that the comma specifies a range (from the line before the comma to the line after).
- awk
$ awk 'NR==1,NR==3 {$0 = " "$0} {print }' input.txt
12
34
56
78
An awk program consists of condition/action pairs. The first pair has the condition "if NR (current line number) is from 1 to 3", and the action is to append 5 spaces to $0 (the current line). The second pair has a null condition which means it applies to every line, and the action is just to print the line.
- perl
$ perl -pe '$_ = " " . $_ if 1 <= $. and $. <=3' input.txt
12
34
56
78
$. is the current input line number.
$_ is the current line.
. (dot) is the concatenate operator.
0 comments:
Post a Comment