【发布时间】:2022-01-05 19:38:42
【问题描述】:
我的源文件:
0.txt:
[dog$#@.txt ;`ffxx00`]
[dog$#@.txt ;`ffxx00`]
[dog$#@.txt ;`ffxx00`]
[dog$#@.txt ;`ffxx00`]
[dog$#@.txt ;`ffxx00`]
[dog$#@.txt ;`ffxx00`]
我有以下命令使用每 2 个 .txt 计数为数字添加前缀:
$ awk -v n=2 '{ newline=""; while ( x=index($0,".txt")) { if(cnt%n==0) pfx++; newline=newline substr($0,1,x-1) pfx substr($0,x,3) ; $0=substr($0,x+3); cnt++} print newline $0}' 0.txt
[dog$#@1.txt ;`ffxx00`]
[dog$#@1.txt ;`ffxx00`]
[dog$#@2.txt ;`ffxx00`]
[dog$#@3.txt ;`ffxx00`]
[dog$#@3.txt ;`ffxx00`]
[dog$#@3.txt ;`ffxx00`]
但我想从特定的数字前缀开始计数,例如 3 这样我的结果是这样的:
[dog$#@3.txt ;`ffxx00`]
[dog$#@3.txt ;`ffxx00`]
[dog$#@4.txt ;`ffxx00`]
[dog$#@4.txt ;`ffxx00`]
[dog$#@5.txt ;`ffxx00`]
[dog$#@5.txt ;`ffxx00`]
【问题讨论】:
-
将
index中的$修复为$0并以awk -v pfx=2 -v n=2 ...启动awk,一切就绪。 -
@JamesBrown 抱歉,在尝试寻找解决方案时,我不想
0删除了index($0,。我已经了解pfx++的用法,但我没有注意我可以用它做什么, -
@JamesBrown 好的,我按照我说的做了,这正是我需要的,所以现在它可以正常工作了。