将$ 3中的所有值更改为零

时间:2014-01-16 20:01:59

标签: bash shell awk

我有一个看起来像这样的文件:

2360 111037877 111105745 111161458
505 111128359 111026865 111006164 
375 117170057 0 0
247 117086016 0 0
613 117030996 117010050 117029287

我想将第3列中的所有值更改为零,以便文件如下所示:

2360 111037877 0 111161458
505 111128359 0 111006164 
375 117170057 0 0
247 117086016 0 0
613 117030996 0 117029287

我该怎么做?我知道这是一个非常基本的问题,但我不能用awk来做。我试图做这样的事情:

awk '{$3 = 0}' old file > new file

awk '$3 == "*" { $3=0}' old file > new file

2 个答案:

答案 0 :(得分:5)

你的第一次尝试几乎是好的,你只是忘了打印线:

awk '{$3 = 0; print}'

同一事物的较短版本:

awk '{$3 = 0}1'

答案 1 :(得分:2)

您只需要print $0

% awk '{$3=0;print $0}' inp.txt 
2360 111037877 0 111161458
505 111128359 0 111006164
375 117170057 0 0
247 117086016 0 0
613 117030996 0 117029287