这是一个查询:
grep bar 'foo.txt' | awk '{print $3}'
'awk'查询发出的字段名称是受损的C ++符号名称。我想将每个传递给dem并最终输出'dem'的输出 - 即解码符号。
假设字段分隔符是''(空格)。
答案 0 :(得分:3)
awk
是一种模式匹配语言。 grep
完全没必要。
awk '/bar/{print $3}' foot.txt
做你的例子。
编辑在阅读前面答案的评论后修了一下(我不知道有关dem
的事情......):
您可以在awk中使用system
调用,例如:
awk '/bar/{cline="dem " $3; system(cline)}' foot.txt
但是这会为处理的每个符号生成dem
的实例。非常低效。
所以让我们更聪明:
awk '/bar/{list = list " " $3;}END{cline="dem " list; system(cline)}' foot.txt
BTW - 未经测试,因为我没有dem
或您的输入。
另一个想法:如果你打算使用其他海报提供的xargs
公式,cut
可能比awk
更有效率。但是,此时您需要再次grep
。
答案 1 :(得分:1)
怎么样
grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'
答案 2 :(得分:1)
这将打印demangled符号,在方法的情况下用参数列表完成:
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'
在方法的情况下,这将打印出消除符号,不带参数列表:
awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'
干杯, 诉