如何将递增数字添加到与带 Bash (awk) 的模式匹配的行中



>我有一个文件,其中有许多注释行随机抛出,格式如下

Comment,blahblahblah
Comment,blahblahblah
Comment,blahblahblah

我想在注释行中添加一个递增的数字,例如

Comment,1 blahblahblah
Comment,2 blahblahblah
Comment,3 blahblahblah

我试过这个没有运气

awk '{for(x=1;x<=NF;x++)if($x~/Comment,/){sub(/Comment,/Comment, ++i)}}1' filename 

sub()的第二个参数应该是一个字符串,这需要Comment,两边的引号。

也无需遍历列,您可以简单地匹配整行。

awk '/Comment,/ { sub(/Comment,/, "Comment, " ++i) }1' filename

另一个awk

$ awk '{i+=sub(/^Comment,/,"&" i+1 " ")}1' file
Comment,1 blahblahblah
Comment,2 blahblahblah
Comment,3 blahblahblah

你甚至不需要awk(除非你需要它很快(。

#!/usr/bin/env bash
counter=0
while IFS= read -r line; do
[[ $line = *Comment,* ]] && line=${line//Comment,/Comment,$((++i)) }
printf '%sn' "$line"
done
awk '{gsub("Comment,","Comment,"NR,$0);print;}' filename

最新更新