解析使用“AWK” /“GAWK”


0

这里每个字段和过程它是查询:

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

由“AWK”发出查询字段名是错位的C++符号名。我想分别传递给dem,最后输出'dem'的输出,即demangled符号。

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

1

如何

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

我读的dem手册页的方式,符号名称应在命令l而不是stdin 22 2月. 092009-02-22 03:56:35

  0

哎呀,我误解了。我编辑了一个调用xargs的应该修复它。 22 2月. 092009-02-22 03:58:08

  0

好吧,c + +端可以有他们的空间:) 22 2月. 092009-02-22 04:50:33

  0

学校,我希望不会是这样的... 22 2月. 092009-02-22 05:02:35

  0

是啊我的c + +过滤的东西不会与他的(显然)太阳mangling风格工作: /。但你也许很幸运,也许dem不会把空格放到C++端?从这些例子中可以看出,至少省略了返回类型 22 2月. 092009-02-22 05:26:51


3

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

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

做你的例子。

编辑修正了一下阅读的precedeing答案的意见后(我不知道一件事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 

BTW - 未经检验的,因为我没有dem或输入。


另一种思考:如果你要使用其他的海报所提供的xargs配方,cut很可能会比awk更有效。但是,此时您需要再次使用grep


1

这将打印demangled符号,完整的参数列表中的方法的情况下:

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

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

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

干杯, 五,