gpt4 book ai didi

bash - 带有存储在文件中的通配符的 grep

转载 作者:行者123 更新时间:2023-11-29 09:24:55 25 4
gpt4 key购买 nike

我希望 grep 通过读取需要从文本文件中过滤掉的内容来过滤掉行。

这是我给grep的。它存储在 foo.txt 中:

".*  /Users/1337/X$"
".* /Users/1337/R$"
".* /Users/1337/W$"

这是它应该过滤的内容。它存储在 bar.txt 中:

1121cfccd5913f0a63fec40a6ffd44ea64f9dc135c66634ba001d10bcf4302a2  /Users/1337/R
dc460da4ad72c482231e28e688e01f2778a88ce31a08826899d54ef7183998b5 /Users/1337/T
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 /Users/1337/W
53c234e5e8472b6ac51c1ae1cab3fe06fad053beb8ebfd8977b010655bfdd3c3 /Users/1337/X

这是我运行的命令:

cat bar.txt | grep -f foo.txt

我希望它输出这个:

1121cfccd5913f0a63fec40a6ffd44ea64f9dc135c66634ba001d10bcf4302a2  /Users/1337/R
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 /Users/1337/W
53c234e5e8472b6ac51c1ae1cab3fe06fad053beb8ebfd8977b010655bfdd3c3 /Users/1337/X

但是它没有输出任何东西。我该如何解决这个问题?

Mac OS X Yosemite,bash 3.2.57(1)-release

最佳答案

您应该从 foo.txt 中删除双引号。引号由 shell 处理以保护特殊字符,但它们实际上并不是模式的一部分,并且在从文件中读取时按字面意思处理。

如果您不能修改文件,您可以使用进程替换即时删除它们:

grep -f <(sed 's/^"\(.*\)"$/\1/' foo.txt) bar.txt

关于bash - 带有存储在文件中的通配符的 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49538345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com