【发布时间】:2013-01-21 14:00:56
【问题描述】:
我有一个文件(大约 1000 字)。
1.txt:
XYZ
ABC
DEF
GHI
...
我还有另一个文件 2.txt 包含一些数据,现在我想在文件 2.txt 中的 1.txt 中 grep 这些单词。 我使用了下面的逻辑,但是报错了。
name=$(cat 1.txt |tr '\n' '|')
grep -E -w ${name} 2.txt
【问题讨论】:
我有一个文件(大约 1000 字)。
1.txt:
XYZ
ABC
DEF
GHI
...
我还有另一个文件 2.txt 包含一些数据,现在我想在文件 2.txt 中的 1.txt 中 grep 这些单词。 我使用了下面的逻辑,但是报错了。
name=$(cat 1.txt |tr '\n' '|')
grep -E -w ${name} 2.txt
【问题讨论】:
Grep 可以使用-f 选项从文件中读取模式:
egrep -w -f 1.txt 2.txt
【讨论】:
你需要引号并使用 egrep
egrep -w "$(cat 1.txt |tr '\n' '|')" 2.txt
但是 -f 的答案更好
【讨论】:
egrep 是调用grep -E 的另一种方式,他已经在这样做了。引用可能需要也可能不需要,取决于 1.txt 的内容,但当然是个好主意。