如何删除 Linux 文本中的所有特殊字符

How to remove all special characters in Linux text

如何去除图片中显示为蓝色的特殊字符1 如:^M, ^A, ^@, ^[.在我的理解中,^M是一个windows换行符,我可以用sed -i '/^M//g'去掉它,但是去掉其他的就不行了。命令 dos2unix 也不起作用。有什么方法可以同时删除它们吗?

删除除可打印字符(字符class [:print:])以外的所有内容,使用sed:

sed $'s/[^[:print:]\t]//g' file.txt

[:print:] 包括:

  • [:alnum:](字母数字)
  • [:punct:](标点符号)
  • space

ANSI C 引用 ($'') 用于将 \t 解释为 $'' 中的文字制表符(在 bash 等中)。

在 vi 中尝试这个或 vim:

[in ESC mode] type: :%s/^M//g

或:

sed -e "s/^M//" filename > newfilename

重要提示:要输入 ^M,请按 CTRL-V,然后按 CTRL-M

为确保该命令在 Sed 中的有限范围内工作,强制使用 "C" (POSIX) character classifications 以避免非 ASCII 字符出现不可预知的行为:

LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt

在 linux 命令提示符下尝试 运行 下面的命令

选项-1:(如果dos2unix命令安装在Linux机器上)

dos2unix sample_file.txt

选项 - 2:

cat sample_file.txt | tr -d '5' > new_sample_file.txt