Size: 1055
Comment: ok for $file, but $x and $y are supposed to be bash parameters
|
Size: 1056
Comment: cat -n is not standard; follow the recommendation in posix for using pr -n -t in its place.
|
Deletions are marked like this. | Additions are marked like this. |
Line 36: | Line 36: |
Using cat(1) (and grep(1) (and cut(1))): | Using pr(1) (and grep(1) (and cut(1))): |
Line 39: | Line 39: |
cat -n file | grep '^ *<number of line>' | cut -f 2 | pr -n -t file | grep '^ *<number of line>' | cut -f 2 |
How can I print the n'th line of a file?
The dirty (but not quick) way would be:
sed -n ${n}p "$file"
but this reads the whole input file, even if you only wanted the third line.
This one avoids that problem:
sed -n "$n{p;q;}" "$file"
At line $n the command "p" is run, printing it, with a "q" afterwards: quit the program.
Another way, more obvious to some, is to grab the last line from a listing of the first n lines:
head -n $n $file | tail -n 1
Another approach, using ["AWK"]:
awk "NR==$n{print;exit}" file
If you want more than one line, it's pretty easy to adapt any of the previous methods:
x=3 y=4; sed -n "$x,${y}p;${y}q;" "$file" # Print lines $x to $y; quit after $y. head -n $y "$file" | tail -n $(($y - $x + 1)) # Same awk "NR>=$x{print} NR==$y{exit}" "$file" # Same
Using pr(1) (and grep(1) (and cut(1))):
pr -n -t file | grep '^ *<number of line>' | cut -f 2