Content #
用等号来显示数据流中行的行号: $ sed ‘=’ data2.txt 1 Header Line 2 First Data Line 3 Second Data Line 4 End of Data Lines $ 这多少有点儿难看,因为行号出现在了实际行的上方。更好的解决办法是将行号和文本放在同一行。
你已经知道如何用N命令合并行,在sed脚本中使用这个命令并不难。棘手之处在于,无法将两个命令放到同一个脚本中。在获得了等号命令的输出之后,可以通过管道将输出传给另一个sed编辑器脚本,由后者使用N命令来合并这两行。还需使用替换命令将换行符更换成空格或制表符。最终的解决方法如下所示: $ sed ‘=’ data2.txt | sed ‘N; s/\n/ /’ 1 Header Line 2 First Data Line 3 Second Data Line 4 End of Data Lines $ 现在看起来好多了。在查看错误消息的行号时,这是一个很好用的小工具。
有些bash shell命令也能添加行号,但是会引入一些额外的(可能是不需要的)间隔: $ nl data2.txt 1 Header Line 2 First Data Line 3 Second Data Line 4 End of Data Lines $ $ cat -n data2.txt 1 Header Line 2 First Data Line 3 Second Data Line 4 End of Data Lines $ $ nl data2.txt | sed ’s/ /; s\t/ /’ 1 Header Line 2 First Data Line 3 Second Data Line 4 End of Data Lines $ sed编辑器脚本的输出没有任何多余的间隔。但如果确实想使用这些工具,则sed 可以删除任何不需要的间隔。
From #
Linux命令行与shell脚本编程大全