Shell 程序,它使用行号读取行和输出行

sha*_*ard 5 bash shell-script

我需要编写一个程序,从文件中读取行并将行stdin写入stdout行号。我无法使用cat -n.

假设文本文件有这个:

 abcdef
 ghi

 klm
 nopqr st
Run Code Online (Sandbox Code Playgroud)

它应该基本上读取这些行并输出这些行,但带有行号。

这是我的 while 读取循环,但它不会打印出每一行。

while read line
do
    awk '{print NR, $0}'

done < file
Run Code Online (Sandbox Code Playgroud)

基本上这个输出是这样的:

1 ghi
2 
3 klm
4 nopqr   st
Run Code Online (Sandbox Code Playgroud)

出于某种原因,abcdef没有出现,数字 2 不应该是空白的。

rɑː*_*dʒɑ 8

你有没有尝试过 nl -b a <file_name>

debian@virt00:~/test$ nl -b a file
     1  abcdef
     2   ghi
     3
     4   klm
     5   nopqr st
debian@virt00:~/test$
Run Code Online (Sandbox Code Playgroud)
  • nl 代表数轴
  • -b 用于正文编号的标志
  • 'a' 代表所有行。

更多信息http://linux.die.net/man/1/nl


And*_*rew 3

您可以使用“cat -n”,标志“-n”是将数字添加到“cat”的输出行。