如何在文本文件中添加一列,其中的值是行号?
之前的文件:
Foo Ba Lk Q
Lorem ipsum doler
Run Code Online (Sandbox Code Playgroud)
文件后
1 Foo Ba Lk Q
2 Lorem ipsum doler
Run Code Online (Sandbox Code Playgroud)
等等
几种不同的方法:
猫
$ cat -n file
1 Foo Ba Lk Q
2 Lorem ipsum doler
Run Code Online (Sandbox Code Playgroud)珀尔
perl -pe 's/^/$. /' file
Run Code Online (Sandbox Code Playgroud)
的-pe意思是“由施加给定的脚本后打印每个输入线路-e到它”。然后,我们将^(行首)替换为行号 ( $.) 和一个空格。
或者,由于这是 Perl 和TIMTOWTDI:
perl -ne 'print "$. $_"' file
perl -pe '$_ = "$. $_"' file
Run Code Online (Sandbox Code Playgroud)
在所有这些示例中,如果要修改原始文件,请使用-i:
perl -i -pe 's/^/$. /' file
perl -i -ne 'print "$. $_"' file
perl -i -pe '$_ = "$. $_"' file
Run Code Online (Sandbox Code Playgroud)awk
$ awk '{print NR,$0}' file
1 Foo Ba Lk Q
2 Lorem ipsum doler
Run Code Online (Sandbox Code Playgroud)
特殊变量NR是当前行号和$0当前行。要在原始文件中进行更改(假设您有足够新的 GNU awk 版本),请执行以下操作:
gawk -iinplace '{print NR,$0}' file
Run Code Online (Sandbox Code Playgroud)sed
$ sed = file | sed 'N;s/\n/\t/'
1 Foo Ba Lk Q
2 Lorem ipsum doler
Run Code Online (Sandbox Code Playgroud)
该=手段“的每行前打印行数”。但是,这会将数字单独打印在一行上,并在其下打印输入行。第二个sed命令再次将它们放回同一行。