我有很多用户的列表,我想只匹配其中包含一个单词的用户
**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 :(得分:3)
使用awk会更容易:
awk 'FNR==NR {a[$1];next} $0 in a' txt1.txt txt2.txt
charles
first
a[$1]
创建数组,以确保只在数组中使用第一个单词$0 in a
以确保file2中的完整字符串与file1 答案 1 :(得分:0)
据我所知,您可以使用
执行此操作join <(awk NF==1 txt1.txt | sort -u) <(awk NF==1 txt2.txt | sort -u)
答案 2 :(得分:0)
你可以这样做
awk NF==1 txt1.txt txt2.txt | sort | uniq -c | awk '$1==2{print $2}'
答案 3 :(得分:0)
我认为hek2mgl答案匹配所有单词,但不是一行单词。继承人的行版本:
grep -o '^[^\s]+$' file1 file2 ...