【发布时间】:2015-04-22 22:35:57
【问题描述】:
我需要从一个列表 (list.txt) 中提取所有匹配项,该列表可以在另一个列表的一列中找到(在 Data.txt 中)到第三个 (output.txt) 中。
Data.txt(制表符分隔)
some_data more_data other_data here yet_more_data etc
A B 2 Gee;Whiz;Hello 13 12
A B 2 Gee;Whizz;Hi 56 32
E 4 Btm;Lol 16 2
T 3 Whizz 13 3
列表.txt
Gee
Whiz
Lol
理想的 output.txt 看起来像
some_data more_data other_data here yet_more_data etc
A B 2 Gee;Whiz;Hello 13 12
A B 2 Gee;Whizz;Hi 56 32
E 4 Btm;Lol 16 2
所以我尝试了一个shell脚本
for ids in List.txt
do
grep $ids Data.txt >> output.txt
done
除了我在上述脚本的List.txt 中输入了所有内容(实际上是剪切和粘贴)。
不幸的是,它给了我一个output.txt,包括最后一行,我认为“Whizz”包含“Whiz”。
我也试过cat Data.txt | egrep -F "List.txt",结果是grep: conflicting matchers specified——我想我太天真了。实际文件:List.txt 包含 985 个单词的排序列表,Data.txt 有 115576 行 17 列。
非常感谢一些帮助/指导。
【问题讨论】:
-
查找有关 linux/unix
join实用程序的教程。最坏的情况,man join或info join。祝你好运。