0

我的文件有数千行,看起来像

R4604                17131G1                   499456.1 1966201.0   0.0  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4496                12011G1                   473856.2 1960800.9   0.0  1000001
R4496                12011G1                   473856.2 1960800.9  64.0  1000001

我想得到的输出是

R4604                17131G1                   499456.1 1966201.0   8.5  1000001
R4496                12011G1                   473856.2 1960800.9  64.0  1000001

因此,如果第 1-5 列相同,只需获取一行,如果第 1-4 列相同且第 5 列中的值不同,则删除第 5 列值为 0.0 的行

感谢您的帮助亚历杭德罗

4

1 回答 1

3

假设一个已排序的值,并且对于组中的每一行,第 5 列始终为 0 或相同的非零值,并且第 5 列等于 5 时没有要保留的行:

awk '$5 != 0 {key = $1 $2 $3 $4 $5; if (prev != key) {print saved}; prev = key; saved = $0} END {print saved}' inputfile
于 2012-05-24T19:13:21.720 回答