linux - 如何向文件添加行号?

标签 linux unix sed

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"

关于linux - 如何向文件添加行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641022/

相关文章:

regex - 如何找到第一次出现的重复并将其转换为文本

linux - linux 的 root 用户无法控制地跨越大量 python 脚本进程

linux - 将一个二进制文件的部分 stdout 输出替换为另一个二进制文件的输出的 unix 命令是什么?

linux - 信号确认

linux - gawk 不会过滤掉更大的数字吗?

linux - 如何格式化 ifconfig 的输出

bash - 使用 shell 脚本在模式匹配后删除或替换文件中的第 n 行

linux - awk 中有多个条件

linux - awk - solaris 中的反引号以接受命令行 arg

linux - 时区说明 - LINUX env