【发布时间】:2017-03-30 04:04:00
【问题描述】:
如何去除图片1中显示为蓝色的特殊字符,如:^M、^A、^@、^[。在我的理解中,^M 是一个windows换行符,我可以用sed -i '/^M//g'来删除它,但是它不能删除其他的。命令dos2unix 也不起作用。有什么方法可以用来删除它们吗?
【问题讨论】:
标签: linux sed non-printable
如何去除图片1中显示为蓝色的特殊字符,如:^M、^A、^@、^[。在我的理解中,^M 是一个windows换行符,我可以用sed -i '/^M//g'来删除它,但是它不能删除其他的。命令dos2unix 也不起作用。有什么方法可以用来删除它们吗?
【问题讨论】:
标签: linux sed non-printable
删除除可打印字符(字符类[:print:])以外的所有内容,使用sed:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:] 包括:
[:alnum:](字母数字)[:punct:](标点符号)ANSI C 引用 ($'') 用于将 \t 解释为 $'' 中的文字选项卡(在 bash 等中)。
【讨论】:
tr 会更快:tr -d '[[^:print:]\t]' < file.txt
tr -dC '[:print:]\t\n'(不能将^ 与tr 一起使用,而外部的[] 将被视为要匹配的字符;还需要保留\n)。
linux,因此常规单引号字符串将与 GNU Sed,它本身就理解 \t。或者,将\t 替换为[:blank:] 将绕过该问题。
为确保该命令在 Sed 中的有限范围内工作,请强制使用 "C" (POSIX) character classifications 以避免非 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
【讨论】: