从文本文件中拉出一个单词的匹配名称

时间:2014-10-09 22:02:47

标签: regex grep

我有很多用户的列表,我想只匹配其中包含一个单词的用户

**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

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

4 个答案:

答案 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 ...