这是我的样本文件
user@linux:~$ cat file.txt
Line 1
Line 2
Line 3
Line 4
Line 5
user@linux:~$ 我可以用grep -A2 'e 2' file.txt打印第2-4行。
user@linux:~$ grep -A2 'e 2' file.txt
Line 2
Line 3
Line 4
user@linux:~$ 我也可以用grep -n打印出行号。
user@linux:~$ grep -nA2 'e 2' file.txt
2:Line 2
3-Line 3
4-Line 4
user@linux:~$ 而且,同样的事情也可以用sed -n 2,4p file.txt来完成。
user@linux:~$ sed -n 2,4p file.txt
Line 2
Line 3
Line 4
user@linux:~$ 但我不知道如何用sed打印行号
是否可以用sed打印出行号?
发布于 2019-06-20 15:11:09
AWK:
awk 'NR==2,NR==4{print NR" "$0}' file.txt双sed:
sed '2,4!d;=' file.txt | sed 'N;s/\n/ /'格伦杰克曼's sed和粘贴:
sed '2,4!d;=' file.txt | paste -d: - -巴特's Perl版本:
perl -ne 'print "$. $_" if 2..4' file.txtcat和sed:
cat -n file.txt | sed -n '2,4p'也可以看到这个回答类似的问题。
一点的解释:
sed -n '2,4p'和sed '2,4!d'做了同样的事情:第一个只在第二个和第四个(包括)之间打印行,后者“删除”除这些行之外的每一行。sed =打印行号,后面跟着换行符。见手册。cat -n可以被nl或grep -n ''替换。发布于 2019-06-20 15:37:56
我已经做了下面提到的两种方法
Method1
awk '/2/{x=NR+2}(NR<=x){print NR"-"$0 }' filename命令
2-Line 2
3-Line 3
4-Line 4Method2
sed -n '{;=;p}' filename| sed "N;s/\n/ /g"| sed -n '/2/,+2p'输出
2 Line 2
3 Line 3
4 Line 4https://unix.stackexchange.com/questions/526064
复制相似问题