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

vim图片 如何去除图片1中显示为蓝色的特殊字符,如:^ M,^ A,^ @,^ [。 在我的理解中,^ M是一个windows换行符,我可以使用sed -i '/^M//g'来移除它,但是不能移除其他的。 命令dos2unix也不起作用。 是否有任何方法可以用来删除它们?

除了可打印字符(字符类[:print:] )之外,删除所有内容,使用sed

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

[:print:]包括:

  • [:alnum:] (alpha-numerics)
  • [:punct:] (标点符号)
  • 空间

ANSI C引用( $'' )用于解释\t作为$''文字标签(在bash和类似文件中)。

为了确保命令在Sed中的作用范围有限,强制使用“C”(POSIX)字符分类以避免使用非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 '\015' > new_sample_file.txt 

在vi或者vim里面试试这个:

[在ESC模式下]键入::%s / ^ M // g

要么:

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

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