如果在超过90%的文件

时间:2016-01-15 10:42:59

标签: bash shell

我有100个txt文件,每个文本文件只包含一个长列中的ID。我想在所有100个文件中找到每个ID,如果100个文件中至少有90个出现ID,则ID将附加到文件中。程序将查找所有文件中的每个ID,并输出至少90%的文件中找到的所有ID。我知道该怎么做,但我不能把它放在一个shell脚本中。例如,每个文件看起来像这样

file_1.txt

BGIBMGA010657
BGIBMGA010658
BGIBMGA010659
BGIBMGA010664
BGIBMGA010666
BGIBMGA010671
BGIBMGA010673
BGIBMGA010674
BGIBMGA010676
BGIBMGA010685
BGIBMGA010687
BGIBMGA010699
BGIBMGA010714
BGIBMGA010723

代码会做这样的事情

for line in file
   for files in *.txt
      if line found in at least 90 files
         append line in a new file

我需要将其翻译成shell脚本。 感谢

1 个答案:

答案 0 :(得分:0)

awk '
    BEGIN { num_files = ARGC - 1 }
    { count[$1]++ }
    END {
        for (id in count)
            if ( (count[id]/num_files) >= 0.9)
                print id
    }
' *.txt