2016-01-15 23 views
-1

我有100个txt文件,每个文本文件仅在一个长列中包含ID。我想在全部100个文件中查找每个ID,如果在100个文件中至少有90个出现ID,则ID将被附加到文件中。该程序将查找所有文件中的每个ID并输出在至少90%的文件中找到的所有ID。我有一个想法,但我不能把它放在一个shell脚本中。例如,每个文件看起来像这样如果在超过90%的文件中找到搜索和输出项目

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脚本。 谢谢

+0

你有什么具体问题吗? – 123

+0

我会为此使用[tag:awk]:保留找到的所有id的计数,并且在所有文件处理完毕后,遍历所有id并且如果count> = 90,则打印它。 –

+0

这正是我想要做的,但我不能在这方面拿出一个shell脚本。 – Uzo

回答

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