【发布时间】:2010-10-09 03:01:37
【问题描述】:
这是一个查询:
grep bar 'foo.txt' | awk '{print $3}'
“awk”查询发出的字段名称是错位的 C++ 符号名称。我想将每个传递给dem,最后输出“dem”的输出——即去错符号。
假设字段分隔符是' '(空格)。
【问题讨论】:
这是一个查询:
grep bar 'foo.txt' | awk '{print $3}'
“awk”查询发出的字段名称是错位的 C++ 符号名称。我想将每个传递给dem,最后输出“dem”的输出——即去错符号。
假设字段分隔符是' '(空格)。
【问题讨论】:
awk 是一种模式匹配语言。 grep 完全没有必要。
awk '/bar/{print $3}' foot.txt
按照你的例子做。
编辑在阅读了前面答案中的 cmets 后稍作修正(我对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
顺便说一句-- 未经测试,因为我没有 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:'
干杯, 五、
【讨论】: