AWK多种模式替换

时间:2013-12-30 13:23:41

标签: awk

使用AWK我想处理这个文本:

#replace count 12
in in
  #replace in 77
main()
{printf("%d",count+in);
}

分为:

in in
ma77()
{pr77tf("%d",12+77);
}

当发生'#replace'声明时,只会影响其下面的代码。我有:

/#replace/ { co=$2; czym=$3 }
!/#replace/ { gsub(co,czym); print }

但是我只得到

in in
ma77()
{pr77tf("%d",count+77);
}

作为回报。正如你所看到的,只有第二个gsub有效。有没有一种简单的方法来记住所有的替换?

1 个答案:

答案 0 :(得分:3)

您只需使用数组来存储替换:

$ awk '/#replace/{a[$2]=$3;next}{for(k in a)gsub(k,a[k])}1' file
in in
ma77()
{pr77tf("%d",12+77);
}