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