0

我有一个messages.txt包含 100 行左右的文件,我想在给定目录的所有文件中搜索messages.txt. 搜索必须是递归的。

如果搜索可以与正则表达式匹配,那也很好。原来 的每一行messages.txt都是 形式的foo=bar,而我只对foos 感兴趣,所以我需要忽略=bar每一行的 。(通过准备一个新的 来解决这个问题很容易messages.txt,但是很高兴知道是否已经有一个功能可以做到这一点)。

我在这里的选择是Python(因为我喜欢它)和bash scripting(因为我正在努力学习它)。我可以很容易地想出一个Python脚本,所以如果你给出一个解决方案,Python如果它是 Pythonic 的方式,将不胜感激。但是,我的偏好是bash- 我希望混合使用sed, grep,findcat(不一定是全部)可以解决问题。

谢谢

4

2 回答 2

1

只需使用 fgrep:

fgrep -rlf messages.txt dir

或者 grep -f

grep -Frlf messages.txt dir

如果要搜索正则表达式,请不要使用 -F:

grep -rlf messages.txt dir

更新:如果您的行 messages.txt 包含像 foo=bar 这样的模式,您可以使用带有进程替换的 cut 并在 bash 中使用 cut:

grep -rlf <(cut -d = -f 2- messages.txt) dir
于 2013-09-13T13:42:19.490 回答
-1
grep -r -f message.txt *

应该做的伎俩

于 2013-09-13T13:43:23.917 回答