unix - 使用 SED、ECHO 和 C++FILT 去除 txt 文件中的所有 c++ 符号
问题描述
考虑一个具有以下内容的输入文件:
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
命令有什么问题?
解决方案
我认为使用 perl 可以更轻松地完成
perl -i.bak -pe 'chomp($_ = qx{echo \"$_\" | /usr/bin/c++filt}) if /,_/' input.txt
推荐阅读
- python - python在列中找到第二次出现的集合
- ios - 如何修复 Twilio 可编程语音错误 - 52134 无效的 APNs 设备令牌
- objective-c - 在 Objective-C(测试)代码中导入框架的 Swift 类
- typescript - 方法之间的类型约束
- java - 在 O(log n) 时间内计算排序 int 数组中具有相同数字的数字
- javascript - 无法在引导程序中的文本框前面放置一个按钮
- c++ - C++ 替代 Java 的 split(str, -1)
- spring - Spring batch - 根据之前拆分完成状态的一些流程定义拆分
- r - 绘制函数的函数
- python - Is it faster to use n = len(s) instead of using len(s) directly?