如何去除图1
中显示为蓝色的特殊字符,如:^M、^A、^@、^[。在我的理解中,^M 是一个windows换行符,我可以用
sed -i '/^M//g'
它来删除它,但它不能删除其他的。该命令dos2unix
也不起作用。有什么方法可以用来删除它们吗?
问问题
100176 次
4 回答
31
删除除可打印字符(字符类[:print:]
)之外的所有内容,使用sed
:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
包括:
[:alnum:]
(字母数字)[:punct:]
(标点符号)- 空间
ANSI C 引用 ( $''
) 用于解释\t
为内部的文字选项卡$''
(inbash
等)。
于 2017-03-30T04:08:02.357 回答
10
为确保该命令在 Sed 中的有限范围内工作,请强制使用“C”(POSIX)字符分类以避免非 ASCII 字符出现不可预知的行为:
LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt
于 2017-03-30T09:31:18.637 回答
3
尝试在 linux 命令提示符下运行以下命令
选项 - 1:(如果 Linux 机器上安装了 dos2unix 命令)
dos2unix sample_file.txt
选项 - 2:
cat sample_file.txt | tr -d '\015' > new_sample_file.txt
于 2017-07-27T21:18:51.753 回答
-1
在 vi 或 vim 中试试这个:
或者:
sed -e "s/^M//" filename > newfilename
重要提示:要输入 ^M,请输入 CTRL-V,然后输入 CTRL-M
于 2017-03-30T06:14:53.760 回答