我有一个包含三列的文件。在与第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”。
非常感谢您!
答案 0 :(得分:1)
此行将从1-> 0重置582行的column3。这些行是不是随机选择的。
awk '$3 && c<582{c++;$3=0}7' file
582
移动到变量中,以便单行代码可以满足您的动态需求。FS, OFS
变量。