如何使用awk或grep比较基于列的行
我想逐行比较我的数据。每个条目都有一个副本,有些条目在某些列中有所不同(以制表符分隔)。例如如何使用awk或grep比较基于列的行,awk,grep,compare,line,Awk,Grep,Compare,Line,我想逐行比较我的数据。每个条目都有一个副本,有些条目在某些列中有所不同(以制表符分隔)。例如 1 0 chrX 121843122 255 16M 1 0 chrX 79062186 250 16M 2 0 chr3 79062186 255 16M 2 0 chr7 79062186 255 16M 3 0 chr3 166649831 255 16M 3 0 chrX 1234
1 0 chrX 121843122 255 16M
1 0 chrX 79062186 250 16M
2 0 chr3 79062186 255 16M
2 0 chr7 79062186 255 16M
3 0 chr3 166649831 255 16M
3 0 chrX 12345678 255 16M
我想知道,如果这两个列(基于column1)都有chrX,那么其余的列可能会不同
在上面的示例中,我将只保留(对于这两种情况,第1列保持相同和第3列保持chrX才重要。)
我想在awk中尝试一下,但它似乎只在专栏方面起作用。如何使用awk或grep实现此功能?这将比较行对,如果相应的字段1和字段3匹配,则同时打印
awk '{
prev=$0; f1=$1; f3=$3
getline
if ($1 == f1 && $3 == f3 && $3 == "chrX") {
print prev
print
}
}' filename
是否要筛选与第一行相似的所有行?(这意味着您要计算该行的出现次数)但如果第一列和第三列相同,这似乎是可行的。我希望第一列是相同的,在第三列中,我对chrX特别感兴趣。例如,我对那些列1相同,列3是chr1的列不感兴趣。第3列中的两个都应该是chrX。这就是
&&$3==“chrX”
条件所针对的hi@glennjackman我又遇到了一些代码问题。
awk '{
prev=$0; f1=$1; f3=$3
getline
if ($1 == f1 && $3 == f3 && $3 == "chrX") {
print prev
print
}
}' filename