如何指定 sed 表达式以从文本文件中删除不可打印的八进制字符

如何指定 sed 表达式以从文本文件中删除不可打印的八进制字符

我是 sed 新手,正在清理一个非常大的文件。清理后的文档看起来正确,但当我将其读入 R 时,它显示每行\016\t末尾都附加了。我已经弄清楚了 是\t一个制表符, 是\016一个 octl(?),但我还没有弄清楚如何将其放入正确的表达式中。

对新的 sed 用户(和 reg 表达式!)的任何帮助都将不胜感激。

答案1

以下适用于bash

sed $'s/\016\t$//' infile >outfile

此正则表达式\016\t$匹配016行末的八进制数和制表符。如果找到此字符串,则将其替换为空。

字符串格式$'...'需要bash。我使用 GNU 测试了上述内容sed,但它据说sed也应该可以与 BSD 兼容。

另一种方法可以在sed没有 的GNU 环境下运行bash,方法是:

sed 's/\o016\t$//' infile >outfile

相关内容