unix 使用SED、ECHO和C++FILT解压缩txt文件中的所有C++符号

eqoofvh9  于 2022-11-23  发布在  Unix
关注(0)|答案(2)|浏览(124)

考虑具有以下内容的输入文件:

RANDOM CONTENTS1
FN:4,_Z1fv
FN:5,_Z1gv
RANDOM CONTENTS2

需要在输入txt文件中搜索mangled符号,并将其替换为demangled名称,然后将其打印为如下输出:

RANDOM CONTENTS1
FN:4,f()
FN:5,g()
RANDOM CONTENTS2

假设,没有其他行会有逗号后跟下划线。因此,我可以使用“,(_.*)”来捕获input.txt文件中的损坏符号。
当我在tcsh shell中使用下面的命令时,它不起作用。输出仍然与input.txt相同。我无法解释原因。

sed "s#,\(_.*\)#,`echo \\1 | /usr/bin/c++filt`#" input.txt

命令有什么问题吗?

kpbwa7wx

kpbwa7wx1#

我认为使用perl可以更容易地完成。

perl -i.bak -pe 'chomp($_ = qx{echo \"$_\" | /usr/bin/c++filt}) if /,_/' input.txt
8wtpewkr

8wtpewkr2#

在shell中运行此命令

C++filt<input.txt>input_demangle.txt

相关问题