我有一个文本文件,其中的字符串用双引号括起来。我想提取这些字符串并检查另一个文件以查看它们是否存在。现在,我得到了:
awk -F'"' '{print $2}' ~/test | <GREP COMMAND>
如何使用我的grep命令在一个循环中查看提取的字符串?
答案 0 :(得分:2)
查看xargs,它从标准输入读取行并为每行运行一次给定的命令。它取决于你安装的xargs的版本,但我会从这样的东西开始:
awk -F'"' '{print $2}' ~/test | xargs -I % grep % <file>
-I %
标志告诉它用从stdin读取的参数替换%
,而不是将它附加到命令行的末尾,这是默认值。
答案 1 :(得分:1)
如果你有GNU grep;
grep -f - file
如果没有,您可以从awk打印出sed
脚本,或者创建一个稍微复杂的awk脚本。或者只是将输出加入一个大的egrep
表达式;
egrep "$(awk -F'"' '{ printf ("%s%s", j, $2); j="|" }' input)"
答案 2 :(得分:1)
将字符串和管道取消引用为grep作为模式文件:
tr -d '"' < strings.txt | grep --file=- another_file.txt
(请注意,对于转义的"
字符,这将无法正常运行,但您的awk命令也不会,因此我认为这不是问题。)
如果适用,使用--fixed-strings
和grep也可以加快速度。