解析每个字段并使用“awk”/“gawk”对其进行处理;

发布于 2024-07-13 22:46:52 字数 283 浏览 4 评论 0原文

这是一个查询:

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

“awk”查询发出的字段名称是损坏的 C++ 符号名称。 我想将每个传递给 dem 并最终输出'dem' 的输出 - 即分解后的符号。

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

Here is a query:

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

The field name emitted by the 'awk' query are mangled C++ symbol names. I want to pass each to dem and finally output the output of 'dem'- i.e the demangled symbols.

Assume that the field separator is a ' ' (space).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你的往事 2024-07-20 22:46:52

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

awk is a pattern matching language. The grep is totally unnecessary.

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

does what your example does.

Edit Fixed up a bit after reading the comments on the precedeing answer (I don't know a thing about dem...):

You can make use of the system call in awk with something like:

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

but this would spawn an instance of dem for each symbol processed. Very inefficient.

So lets get more clever:

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

BTW-- Untested as I don't have dem or your input.


Another thought: if you're going to use the xargs formulation offered by other posters, cut might well be more efficient than awk. At that point, however, you would need grep again.

深海少女心 2024-07-20 22:46:52

怎么样

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

How about

grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'
椵侞 2024-07-20 22:46:52

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

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

这将打印分解的符号,在方法的情况下不带参数列表:

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

干杯,
五、

This will print the demangled symbols, complete with argument lists in the case of methods:

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

This will print the demangled symbols, without argument lists in the case of methods:

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

Cheers,
V.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文