如何删除图片1中显示为蓝色的特殊字符,例如:^M、^A、^@、^[。根据我的理解,^M是Windows换行符,我可以使用
sed -i '/^M//g'
删除它,但删除其他字符不起作用。命令 dos2unix
也不起作用。有什么方法可以将它们都删除吗?
删除除可打印字符(字符类
[:print:]
)之外的所有内容,使用 sed
:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
包括:
[:alnum:]
(字母数字)[:punct:]
(标点符号)ANSI C 引用 (
$''
) 用于将 \t
解释为 $''
内的文字制表符(在 bash
等中)。
为了确保该命令在 Sed 中的有限范围内工作,请强制使用 “C”(POSIX) 字符分类以避免非 ASCII 字符出现不可预测的行为:
LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt
尝试在 Linux 命令提示符下运行以下命令
选项 - 1:(如果 Linux 机器上安装了 dos2unix 命令)
dos2unix sample_file.txt
选项 - 2:
cat sample_file.txt | tr -d '\015' > new_sample_file.txt
在 vi 或 vim 中尝试一下:
或:
sed -e "s/^M//" filename > newfilename
重要:要输入 ^M,请键入 CTRL-V,然后键入 CTRL-M