如何使用awk为任意输入文件添加序列号?附实操案例
用awk给文件添加4位序列号的正确姿势
嘿,我来帮你搞定这个问题~ 你想要给文件每行加4位序列号,其实不用自己定义变量自增,awk有内置的行号变量NR可以直接用,既简单又不容易出错。下面分两种常见需求给你讲解:
1. 在每行开头添加序列号(保留原所有内容)
如果是想把4位序列号插在每行最前面,同时保留原来的所有内容,用这个命令就可以:
awk '{ printf("%04d %s\n", NR, $0) }' Details.txt
或者另一种写法,效果完全一致:
awk 'BEGIN{OFS=" "} { $0 = sprintf("%04d", NR) " " $0; print }' Details.txt
处理你的Details.txt后,输出会是:
0001 0154 Raghav Sharma 26 Indore 0002 0159 rakh patid 24 Pune 0003 0159 rakh patid 24 Pune 0004 0018 sai kanak 28 mumbai 0005 0159 rakh patid Pune 0006 0159 sarak jatid Pune
2. 替换原第一列为序列号(去掉原第一列)
要是你想把原来的第一列替换成4位序列号,用这个命令就好:
awk 'BEGIN{OFS=" "} { $1 = sprintf("%04d", NR); print }' Details.txt
输出结果会是:
0001 Raghav Sharma 26 Indore 0002 rakh patid 24 Pune 0003 rakh patid 24 Pune 0004 sai kanak 28 mumbai 0005 rakh patid Pune 0006 sarak jatid Pune
说说你原来命令的小问题
你之前写的命令里,/^/{...}会匹配所有行,后面的{print $0}根本不会执行。而且自己定义a变量自增完全没必要,awk的NR变量会自动从1开始计数每行,用它更简洁可靠。另外,如果你是想保留原第一列,那替换$1的写法就不对啦,得把序列号拼在$0前面才行~
内容的提问来源于stack exchange,提问作者Shubham Yadav
相关产品推荐
相关产品推荐

