将特定列的值替换为不同的值

时间:2014-01-23 10:00:58

标签: shell awk

嗨我有一个文件,其中列出了很多不同的值列表,我希望能够增加一个值的值,为每个值创建一堆文件。

即我的文件如下:

TEST.DAT

 5   500  Mruh
 6   100  Mrah 
 15  1.77 Mta
 .
 .
 .

依旧......  理想情况下,我想选择6的值(即100)并将其增加50,然后每增加一个新文件。 因此,最终产品应该是一个新文件,如下所示:

test_50.dat

5   500   Mruh
6   150   Mrah
15  1.77  Mta

我尝试过使用awk命令但遇到了问题。任何帮助都会很棒。

干杯!

1 个答案:

答案 0 :(得分:1)

awk应该:

awk '$1==6 {sub($2,$2+50)}1' file >test_50.dat
cat test_50.dat     
5   500  Mruh
6   150  Mrah
15  1.77 Mta

使用6搜索行,然后将50添加到列#2
我确实使用sub来保留格式,就像你在这里看到的那样:

awk '$1==6 {$2+=50}1' file >test_50.dat
cat test_50.dat
 5   500  Mruh
6 150 Mrah
 15  1.77 Mta

根据值50

将其转换为文件
awk '$1==6 {sub($2,$2+v)} {print $0 > "test_"v".dat"}' v=50 file
cat test_50.dat
 5   500  Mruh
 6   150  Mrah
 15  1.77 Mta