存在的awk和grep

时间:2012-04-03 18:47:36

标签: awk grep

我有一个文本文件,其中的字符串用双引号括起来。我想提取这些字符串并检查另一个文件以查看它们是否存在。现在,我得到了:

awk -F'"' '{print $2}' ~/test | <GREP COMMAND>

如何使用我的grep命令在一个循环中查看提取的字符串?

3 个答案:

答案 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也可以加快速度。