0

这是一个查询:

grep bar 'foo.txt' | awk '{print $3}'

'awk' 查询发出的字段名称是错位的 C++ 符号名称。我想将每个传递给dem,最后输出 'dem' 的输出 - 即去错符号。

假设字段分隔符是“”(空格)。

4

3 回答 3

3

awk是一种模式匹配语言。grep完全没有必要。

awk '/bar/{print $3}' foot.txt

做你的例子。

编辑阅读前面答案的评论后修正了一点(我对dem......一无所知):

您可以使用systemawk 中的调用,例如:

awk '/bar/{cline="dem " $3; system(cline)}' foot.txt

但这会dem为每个处理的符号生成一个实例。非常低效。

所以让我们变得更聪明:

awk '/bar/{list = list " " $3;}END{cline="dem " list; system(cline)}' foot.txt

顺便说一句——未经测试,因为我没有dem或您的输入。


另一个想法:如果您要使用xargs其他海报提供的公式,cut可能会比awk. 但是,到那时,您将grep再次需要。

于 2009-02-22T03:58:40.090 回答
1

怎么样

grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'
于 2009-02-22T03:54:49.087 回答
1

这将打印解构后的符号,并在方法的情况下包含参数列表:

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'

这将打印解构符号,在方法的情况下没有参数列表:

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'

干杯,V。

于 2009-02-22T04:04:58.483 回答