繁体   English   中英

如何在文件中添加行号?

[英]How do I add a line number to a file?

file.txt的内容:

"16875170";"172";"50"
"11005137";"28";"39"
"16981017";"9347";"50"
"13771676";"13";"45"
"5865226";"963";"28"

带有结果的文件:

"1";"16875170";"172";"50"
"2";"11005137";"28";"39"
"3";"16981017";"9347";"50"
"4";"13771676";"13";"45"
"5";"5865226";"963";"28"

awk可以很容易地为你做到这一点。

$ cat test.txt
"16875170";"172";"50"
"11005137";"28";"39"
"16981017";"9347";"50"
"13771676";"13";"45"
"5865226";"963";"28"

$ awk '{print "\""NR"\";"$0}' test.txt
"1";"16875170";"172";"50"
"2";"11005137";"28";"39"
"3";"16981017";"9347";"50"
"4";"13771676";"13";"45"
"5";"5865226";"963";"28"

这告诉awk打印一个文字" ,后跟记录号,然后是"; ,然后其余的线。 根据未说明的其他需求(例如引用不是完全必要的),可能有更好的方法使用,但考虑到问题和输出,这是有效的。

用于测试的Grep解决方案:

$ grep ".*" test.txt -n | sed 's/\([0-9]*\):/"\1";/g;'
"1";"16875170";"172";"50"
"2";"11005137";"28";"39"
"3";"16981017";"9347";"50"
"4";"13771676";"13";"45"
"5";"5865226";"963";"28"

为了sed的乐趣:

sed "=" test.txt | sed "N;s/\([0-9]\{1,\}\)\n/\"\1\";/"

输出:

"1";"16875170";"172";"50"
"2";"11005137";"28";"39"
"3";"16981017";"9347";"50"
"4";"13771676";"13";"45"
"5";"5865226";"963";"28"

另外,基于bash:

i=0; cat my_file.txt | while read line; do i=$(( $i + 1 )); echo \\"$i\\"\\;"$line"; done > results.txt

还有coreutils nl

<file.txt nl -s';' -w1 | sed 's/[0-9]*/"&"/'

perl

<file.txt perl -pne 's/^/"$.";/'

或者sedpaste

<file.txt sed = | paste -d\; - - | sed 's/[0-9]*/"&"/'

所有情况下的输出:

"1";"16875170";"172";"50"
"2";"11005137";"28";"39"
"3";"16981017";"9347";"50"
"4";"13771676";"13";"45"
"5";"5865226";"963";"28"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM