【问题标题】:Use Defined Variable with egrep to Match Contents Inside Text File使用 egrep 定义的变量来匹配文本文件中的内容
【发布时间】:2026-02-17 05:10:02
【问题描述】:

我有一个包含许多四字母代码的文本文件。我需要使用这个文本文件的内容将内容与另一个文本文件中的文本进行匹配,然后grep 将匹配行的内容输出到一个新的文本文件中。

经过大量使用后,我无法让下面的代码工作......

while read site

do

egrep -n "${site}" cy.00.txt > file.txt

done < /home/weather/newsites.txt

newsites.txt:

KBED
KBOS
KDCA

预期输出:

832:KBED   XXX    7/10/2015  0000 UTC                      
1060:KBOS   XXX    7/10/2015  0000 UTC                      
1630:KDCA   XXX    7/10/2015  0000 UTC    

【问题讨论】:

  • 你总是写入同一个文件,所以你只会得到最后一个 grep 的结果
  • 您没有包含来自cy.00.txt的样本数据

标签: regex bash unix grep


【解决方案1】:

这应该没有任何循环:

egrep -nf newsites.txt cy.00.txt >file.txt

还可以考虑使用grep -E 而不是egrepman grep 说:

egrep 与 grep -E 相同。 ... 不推荐使用 egrep 或 fgrep 直接调用, 但提供以允许依赖它们运行的​​历史应用程序 未修改。

【讨论】:

  • 这不是将 egrep 结果输出到“file.txt”
  • @A 确实如此,我已经测试过了。检查您是否使用了正确的文件。
  • @AaronPerry newsites.txt 是包含模式的文件,c.00.txt 是需要匹配的文件。