我有很多的用户列表,我想只匹配一个词的那些在他们拉从文本一个字匹配文件名的文件
**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
为了只匹配单个字母,我需要添加或使用什么?
我有很多的用户列表,我想只匹配一个词的那些在他们拉从文本一个字匹配文件名的文件
**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
为了只匹配单个字母,我需要添加或使用什么?
它与AWK容易得多:
awk 'FNR==NR {a[$1];next} $0 in a' txt1.txt txt2.txt
charles
first
a[$1]
做是为了确保只有第一个字用于数组$0 in a
用于确保file2的完整字符串与file1的字符串匹配谢谢,非常有帮助 – user3297875 2014-10-09 22:20:42
不客气,很高兴它解决了。 – anubhava 2014-10-09 22:25:43
虽然我明白了,你能做到这一点与
join <(awk NF==1 txt1.txt | sort -u) <(awk NF==1 txt2.txt | sort -u)
你能做到这样
awk NF==1 txt1.txt txt2.txt | sort | uniq -c | awk '$1==2{print $2}'
我觉得hek2mgl答案匹配所有的话,但没有一个字线。继承人的行版本:
grep -o '^[^\s]+$' file1 file2 ...
什么是您预期的输出? – anubhava 2014-10-09 22:04:50
查尔斯和第一个,他们是在这两个文件中的单个字母的单词 – user3297875 2014-10-09 22:08:24