使用SED,ECHO和C ++ FILT对txt文件中的所有c ++符号进行解贴

时间:2018-12-18 13:50:49

标签: unix sed echo demangler c++filt

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

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

需要在输入的txt文件中搜索错误的符号,并将其替换为不正确的名称,然后将其作为输出打印,如下所示:

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

命令出了什么问题?

1 个答案:

答案 0 :(得分:0)

我认为使用perl可以更轻松地完成

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