2014-10-09 44 views
3

我有很多的用户列表,我想只匹配一个词的那些在他们拉从文本一个字匹配文件名的文件

**txt1.txt** 
charles 
first 
charles users 
user sample 
sample 

**txt2.txt** 
mike 
charles users 
charles 
welcome 
first 

我使用grep来查找文件匹配

grep -xF -f txt1.txt txt2.txt 

为了只匹配单个字母,我需要添加或使用什么?

+0

什么是您预期的输出? – anubhava 2014-10-09 22:04:50

+0

查尔斯和第一个,他们是在这两个文件中的单个字母的单词 – user3297875 2014-10-09 22:08:24

回答

3

它与AWK容易得多:

awk 'FNR==NR {a[$1];next} $0 in a' txt1.txt txt2.txt 
charles 
first 
  • 阵列的创建使用a[$1]做是为了确保只有第一个字用于数组
  • $0 in a用于确保file2的完整字符串与file1的字符串匹配
+0

谢谢,非常有帮助 – user3297875 2014-10-09 22:20:42

+0

不客气,很高兴它解决了。 – anubhava 2014-10-09 22:25:43

0

虽然我明白了,你能做到这一点与

join <(awk NF==1 txt1.txt | sort -u) <(awk NF==1 txt2.txt | sort -u) 
0

你能做到这样

awk NF==1 txt1.txt txt2.txt | sort | uniq -c | awk '$1==2{print $2}' 
0

我觉得hek2mgl答案匹配所有的话,但没有一个字线。继承人的行版本:

grep -o '^[^\s]+$' file1 file2 ... 
相关问题