【发布时间】:2010-09-30 09:17:13
【问题描述】:
我有两个文件,应该比较 file1 的第一列和 file2 的第一列,结果文件应该是 file2
例如:
-
文件1
苹果
香蕉
芒果
马铃薯
番茄 -
文件 2
苹果:水果
茄子:蔬菜
女士的手指:蔬菜
橙色:水果
番茄:蔬菜
马铃薯:蔬菜
生成的文件应如下所示:
苹果:水果
番茄:蔬菜
马铃薯:蔬菜
对此的任何想法将不胜感激
谢谢
【问题讨论】:
我有两个文件,应该比较 file1 的第一列和 file2 的第一列,结果文件应该是 file2
例如:
文件1
苹果
香蕉
芒果
马铃薯
番茄
文件 2
苹果:水果
茄子:蔬菜
女士的手指:蔬菜
橙色:水果
番茄:蔬菜
马铃薯:蔬菜
生成的文件应如下所示:
苹果:水果
番茄:蔬菜
马铃薯:蔬菜
对此的任何想法将不胜感激
谢谢
【问题讨论】:
无需排序(更少的进程创建)
$ awk -F":" 'FNR==NR{f[$0];next}($1 in f)' file file2
apple:fruit
tomato: vegetable
potato: vegetable
【讨论】:
在 Bash、ksh、zsh 中:
join -t: <(sort file1) <(sort file2)
在其他 shell 中,您需要对文件进行预排序。
【讨论】:
grep "$(cat file1.txt)" file2.txt
【讨论】:
grep -f file1.txt file2.txt
grep "`cat file1.txt`" file2.txt。如果你在 Bash 中遇到这个错误,那就太奇怪了。