2
更换第n个比赛以线在sed
可以替换使用/N
(solved so long ago)第N比赛:如何使用awk
$ sed 's/you/ME/1' <<< "hello you are you" # 1 is superfluous here, though
hello ME are you
$ sed 's/you/ME/2' <<< "hello you are you"
hello you are ME
我试图完成相同的awk
和唯一的肮脏的方式,我发现通过元素循环并保持计数器。
即使是简单的情况,这里的比赛是满场,变得有点脏:
$ awk '{for (i=1;i<=NF;i++) if ($i=="you" && ++c==2) $i="ME"}1' <<< "hello you are you"
hello you are ME
因此,我不知道任何的gensub()
,gsub()
或sub()
功能允许您提供这些参数以更直接的方式做到这一点。在GNU awk手册中查看String functions没有显示帮助我找到它。
Ooooh我试过这个,但我不记得'gensub()不能代替'$ 0',但输出它。也就是说,'awk'gensub(/ you /,“ME”,2)''对我来说不起作用,因为它正在打印原始值。很好,非常感谢! – fedorqui