我有一個文本文件是這樣的:AWK:找到,並在某些領域取代僅
$ cat test
12 13 2100 s
12 13 3100 s
100 13 100 s
12 13 300 s
我所要的輸出是這樣的:
$ cat test
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s
我只想要替換100
在字段3(一次100
包含在$3
中)轉換爲2000
。我如何使用awk
完成這項工作?
我有一個文本文件是這樣的:AWK:找到,並在某些領域取代僅
$ cat test
12 13 2100 s
12 13 3100 s
100 13 100 s
12 13 300 s
我所要的輸出是這樣的:
$ cat test
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s
我只想要替換100
在字段3(一次100
包含在$3
中)轉換爲2000
。我如何使用awk
完成這項工作?
下面是使用awk
一個辦法:
awk '{ sub(/100$/, "2000", $3) }1' file
結果:
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s
awk '$3~/100/{gsub(/100/,"2000",$3)}1' your_file
對不起,我沒有正確描述問題,我已更新我的問題。 –
我可以用5000來替換所有不是100的東西嗎? – discipulus
嘗試:
awk '{$3=gensub(100,2000,1,$3);print}' test.txt
我怎麼能代替一切,是不是100,可以說5000 ? – discipulus
@lovedynasty:你可以嘗試這樣的:'awk'{sub(/ [^ 1] * [^ 0] * [^ 0] * /,「5000」,$ 3)} 1'file'。但這可能無法爲您提供預期的結果。通常,當我想執行某種反向模式匹配時,我想使用某種[look-around assertion](http://www.regular-expressions.info/lookaround.html)。不幸的是,'awk'不支持這些,我需要使用更強大的工具。我會在'自動分割'模式中使用'perl'。 HTH。 – Steve