这是一个查询:
grep bar 'foo.txt' | awk '{print $3}'
'awk' 查询发出的字段名称是错位的 C++ 符号名称。我想将每个传递给dem,最后输出 'dem' 的输出 - 即去错符号。
假设字段分隔符是“”(空格)。
awk
是一种模式匹配语言。grep
完全没有必要。
awk '/bar/{print $3}' foot.txt
做你的例子。
编辑阅读前面答案的评论后修正了一点(我对dem
......一无所知):
您可以使用system
awk 中的调用,例如:
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
再次需要。
怎么样
grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'
这将打印解构后的符号,并在方法的情况下包含参数列表:
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'
这将打印解构符号,在方法的情况下没有参数列表:
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'
干杯,V。