如何删除图片1中以蓝色字体显示的特殊字符,例如: ^M, ^A, ^@, ^[. 我了解到,^M 是Windows换行符,在此可以使用
sed -i '/^M//g'
来删除它,但这种方法不适用于其他字符。命令dos2unix
也无法删除它们。是否有其他方法可供使用以彻底删除这些字符呢?
如何删除图片1中以蓝色字体显示的特殊字符,例如: ^M, ^A, ^@, ^[. 我了解到,^M 是Windows换行符,在此可以使用
sed -i '/^M//g'
来删除它,但这种方法不适用于其他字符。命令dos2unix
也无法删除它们。是否有其他方法可供使用以彻底删除这些字符呢?
使用 sed
命令,删除除可打印字符(字符类 [:print:]
)以外的所有内容:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
包括以下内容:
[:alnum:]
(字母数字)[:punct:]
(标点符号)ANSI C 引用($''
)用于在 $''
中将 \t
解释为文字制表符(在 bash
及类似环境中)。
"C" (POSIX) character classifications
LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt
é
。 - mklement0请在Linux命令提示符下运行以下命令:
选项1:(如果Linux机器已安装dos2unix命令)
dos2unix sample_file.txt
cat sample_file.txt | tr -d '\015' > new_sample_file.txt
在 vi 或 vim 中尝试以下操作:
或者:
sed -e "s/^M//" filename > newfilename
重要提示:输入 ^M,请先按下CTRL-V,然后再按下CTRL-M。
tr
命令可以更快地完成这个任务:tr -d '[[^:print:]\t]' < file.txt
。 - chthonicdaemontr -dC '[:print:]\t\n'
(无法使用^
与tr
,且外部的[]
将被视为要匹配的字符;另外需要保留\n
)。 - mklement0\t
。或者,将\t
替换为[:blank:]
也可以避免这个问题。 - mklement0