这是我想到的: awk '!x{x=sub("apple","banana")}7' file 例如:kent$ cat f foo apple foo apple apple kent$ awk '!x{x=sub("apple","banana")}7' f foo banana foo apple apple 对于 sed -i(就地更改)部分,如果您使用的是gawk 4.1.0,则也有这个选项。否则,您必须使用临时文件。
7
。太有趣了! :) +1 - hek2mgl0
之外的任何数字都是有效的,就像我非常喜欢awk
一样!但如果你问我,在这里使用sed
更合适(这就是为什么我给出了那个答案)... - hek2mglawk '!x{x=sub("apple","banana")}{print $0}' test
。如果将{print}替换为数字(任何非零数都为真),则{print}为真(即使没有写)。语法!x{...}
的意思是:如果x != false(即它有一个值),则执行某些操作。对于任何具有基本知识的程序员来说,其余部分应该是清晰的。 - Mohammed Noureldin