【发布时间】:2013-08-14 08:14:02
【问题描述】:
下面的代码将第一次出现的苹果替换为香蕉。 我如何使用 awk / gawk 达到同样的效果?
sed -i "0,/apple/s//banana/" myfile.txt
【问题讨论】:
下面的代码将第一次出现的苹果替换为香蕉。 我如何使用 awk / gawk 达到同样的效果?
sed -i "0,/apple/s//banana/" myfile.txt
【问题讨论】:
这是我想出的:
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
1,你可以+1,现在我用7,你应该+7 :) 没有什么特别的原因,我喜欢这个数字..
awk '!x{x=sub("apple","banana")}{print $0}' test。将 {print} 替换为数字(0 以外的任何值都为真),使 {print} 为真(甚至不写)。这个语法!x{...} 的意思是:如果 x != false(即如果它有一个值)做某事。对于任何基本知识程序员来说,其余的都应该是清楚的。