【问题标题】:sed remove a special control character from many filessed 从许多文件中删除一个特殊的控制字符
【发布时间】:2021-09-21 16:46:32
【问题描述】:

谁能告诉我使用 sed 从嵌套目录中的数千个 html 文件中删除 ^@ 的确切语法? ^@ 是由生成这些文件的 Windows 程序插入的控制字符。我似乎无法正确使用语法。

我使用文件尝试了此操作(但没有成功),因为我无法在命令提示符下输入控制字符: find ./ *.html -type f -exec sed -i 's/^@//g' {};

【问题讨论】:

  • 您的文件中真的有令牌^@ 吗?通常,它出现在许多编辑器中用于不可打印的空字符(又名 0x00h、NUL ASCII、\0)。
  • 关于您的 sed 命令,如果您确实有标记 ^@,请在 ^ 字符之前添加一个反斜杠 \。在正则表达式中,^ 表示“开始于”
  • ^@ 在 vi​​ 中输入为 control-v control-@,而不是文本 ^@。

标签: sed


【解决方案1】:

POSIX sed 不处理输入中的 NUL,但 GNU sed 可以使用十六进制转义:

find . -name '*.html' -type f -exec sed -i 's/\x0//g' '{}' +

【讨论】:

  • 谢谢!!!我刚试了一下,效果很好!
最近更新 更多