如何删除 Linux 文本中的所有特殊字符
How to remove all special characters in Linux text
如何去除图片中显示为蓝色的特殊字符1 如:^M, ^A, ^@, ^[.在我的理解中,^M是一个windows换行符,我可以用sed -i '/^M//g'
去掉它,但是去掉其他的就不行了。命令 dos2unix
也不起作用。有什么方法可以同时删除它们吗?
删除除可打印字符(字符class [:print:]
)以外的所有内容,使用sed
:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
包括:
[:alnum:]
(字母数字)
[:punct:]
(标点符号)
- space
ANSI C 引用 ($''
) 用于将 \t
解释为 $''
中的文字制表符(在 bash
等中)。
在 vi 中尝试这个或 vim:
[in ESC mode] type: :%s/^M//g
或:
sed -e "s/^M//" filename > newfilename
重要提示:要输入 ^M,请按 CTRL-V,然后按 CTRL-M
为确保该命令在 Sed 中的有限范围内工作,强制使用 "C" (POSIX) character classifications 以避免非 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 '5' > new_sample_file.txt
sed -i '/^M//g'
去掉它,但是去掉其他的就不行了。命令 dos2unix
也不起作用。有什么方法可以同时删除它们吗?
删除除可打印字符(字符class [:print:]
)以外的所有内容,使用sed
:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
包括:
[:alnum:]
(字母数字)[:punct:]
(标点符号)- space
ANSI C 引用 ($''
) 用于将 \t
解释为 $''
中的文字制表符(在 bash
等中)。
在 vi 中尝试这个或 vim:
[in ESC mode] type: :%s/^M//g
或:
sed -e "s/^M//" filename > newfilename
重要提示:要输入 ^M,请按 CTRL-V,然后按 CTRL-M
为确保该命令在 Sed 中的有限范围内工作,强制使用 "C" (POSIX) character classifications 以避免非 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 '5' > new_sample_file.txt