Text-Processing
從文件中列印行範圍,並包含行號
我有一個
sed
oneliner,可以從文件中列印行範圍:sed -n '10,20p' file.txt
以上將列印 file.txt 中的第 10 到 20 行。
但是我怎樣才能列印行號?
嘗試
awk
:awk 'FNR==10,FNR==20 {print FNR ":" $0}' file.txt
這將列印行號、冒號,然後是第 10 到 20 行範圍內的行。
或者在第 20 行之後停止閱讀:
awk 'FNR >= 10 {print FNR ":" $0}; FNR == 20 {exit}' file.txt
如果處理多個文件並且您的
awk
實現支持該nextfile
指令:awk -v OFS=: 'FNR >= 10 {print FILENAME, FNR, $0}; FNR == 20 {nextfile}' ./*.txt
(這裡也列印目前文件名)。
sed
有=
列印行號的命令。sed -n '10,20{=;p}' file.txt
但是,它將行號列印在實際行上方的單獨行中。
如果要在實際行的同一行中將行號放在行號之前,可以通過管道
nl
傳遞到sed
,nl file.txt | sed -n '10,20p'
您可能需要設置一些
nl
標誌以使輸出更好。我將其別名為alias nl='nl -b a -n rz -s "|" -w1'
,以便用作|
數字和行之間的分隔符、右對齊數字等。