如何从文件中删除控制 Z 字符?

如何从文件中删除控制 Z 字符?

文件中有控制 Z(^Z) 个字符。我尝试过sed 's/^Z//g' file_name但没有成功。甚至尝试了 perl 脚本但没有删除它们。请告诉我是否有办法删除这个字符。

答案1

产生的控制字符Ctrl+Z\032八进制的。可以通过以下方式删除tr

tr -d '\032' <file >newfile

这将删除文件中任意位置的字符,并创建一个使用newfile修改后的内容调用的新文件。


您的sed命令不起作用,因为表达式^Z将匹配Z行开头的字符。将^表达式的其余部分锚定在行的开头。

答案2

您可以Ctrl+Z使用\d加上字符的十进制代码(在本例中为 26)进行匹配。

sed 's/\d26//g' < file > newfile

“posix”替代方案(在 bash 中)可能类似于:

sed $( echo 's/@//g' | tr '@' '\032' ) < file > newfile

tr 将用 carachter 替换正则表达式中的“@” Ctrl+Z(其代码为八进制的 32)。

答案3

$ sed 's/\^Z//g' filename

笔记:特殊字符应使用“\”转义。

相关内容