更改X条随机行中的值

时间:2019-07-18 11:23:24

标签: bash

我有一个包含三列的文件。在与第2列中的模式匹配的那些行中,第三列具有“ 1”,其余各行具有“ 0”。总的来说,我有636行带有“ 1”的行,现在,我只想保留其中64行带有“ 1”的行,其他582应该变成“ 0”(即使它们与第2列中的模式匹配) )。 例如,我有这个:

ID1    Pattern    1
ID2    Notpattern    0
ID3    Notpattern    0
ID4    Pattern    1

我想要这样的东西(第一行变成“ 0”):

ID1    Pattern    0
ID2    Notpattern    0
ID3    Notpattern    0
ID4    Pattern    1

或者,另一种方法是在第二列(将是636行)中找到模式,并在第三列中仅将“ 1”添加到其中的64行中,其余添加“ 0”。

非常感谢您!

1 个答案:

答案 0 :(得分:1)

此行将从1-> 0重置582行的column3。这些行是不是随机选择的。

awk '$3 && c<582{c++;$3=0}7' file
  • 您可以将582移动到变量中,以便单行代码可以满足您的动态需求。
  • 如果要保留文件的格式(空格,制表符),则需要注意FS, OFS变量。