我有一大堆txt文件格式如下。我想找出所有文件中常见的文本行。我知道我可以使用bash中的两个文件来实现这一点,但我可以使用两个以上的文件(我有204个文件)
文件1:
chrom chrStart chrEnd
chr1 1 1001
chr1 11001 12001
chr1 12001 13001
File 2:
chrom chrStart chrEnd
chr1. 1 1001 chr1. 9001 10001
chr1 12001 13001
输出应为:
File 1:
chrom chrStart chrEnd
chr1 1 1001
chr1 12001 13001
答案 0 :(得分:1)
这个循环怎么样?:
sort < file1 > fileresult
for i in {2..204}; do
comm -12 fileresult <(sort < file$i) > fileresult.tmp
mv fileresult.tmp fileresult
done
自我解释,考虑到你已经知道使用sort&amp; COMM。
awk示例:
awk 'FNR==1{i++}
{a[$0]++}
END{
for(x in a){
if (a[x]==i){print x;}
}
}
' file{1..204}
假设: