使用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有效。有没有一种简单的方法来记住所有的替换?
答案 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);
}