首页 > 解决方案 > 仅从文件中读取模式的一部分

问题描述

我在文件中有一个字符串列表。我想找出添加到特定前缀时的哪些字符串在另一个文件中不存在。

所以如果字符串列表是这样的

foo
bar
baz
qux

目标文件是这个

prefix-foo
prefix-barnotreally
prefix-baz

命令的输出应该是

bar
qux

我知道-fgrep 标志,但据我所知,它不允许用户仅将文件中的字符串用作模式的一部分

标签: bashshellgreppattern-matching

解决方案


您可以使用进程替换从第二个文件中提取要传递给-f选项的部分字符串grep

grep -vxFf <(cut -f2- -d- file2) file1
  • -v- 反向搜索;查找不匹配的行
  • -x- 匹配整行
  • -F- 寻找字符串,而不是正则表达式
  • <(cut -f2- -d- file2)- 从目标文件中提取字符串,留下前缀

推荐阅读