如何仅基于cat命令输出操作?解决nano/vim显示不可见字符问题
只依据
cat命令输出进行操作的方法 我明白你的需求了:用nano或vim打开文件时会看到cat不显示的不可见字符,但你希望后续操作只基于cat能展示的内容。下面是几个实用的解决办法:
用
tr命令过滤不可见字符tr可以快速删除所有非可打印的ASCII字符(也就是cat默认不会显示的那些)。执行这条命令就能生成一个仅保留可打印内容的新文件:cat your_file.txt | tr -cd '\040-\176' > cleaned_file.txt解释一下参数:
-c表示取反匹配,-d表示删除匹配到的字符,\040-\176是ASCII码中从空格到波浪线的范围,正好对应所有可打印字符。之后你就可以用cleaned_file.txt进行后续操作了,它的内容和cat显示的完全一致。用
sed清除非打印字符
如果你更习惯用sed,可以用POSIX字符类来过滤:sed 's/[^[:print:]\n]//g' your_file.txt > cleaned_file.txt[:print:]代表所有可打印字符(包括空格),加上\n是为了保留换行符(避免所有内容挤成一行)。这条命令会把所有非打印、非换行的字符替换为空,也就是直接删除。用
awk处理内容awk也能实现同样的效果,语法稍微灵活一点:awk '{gsub(/[^[:print:]\n]/,""); print}' your_file.txt > cleaned_file.txtgsub会全局替换每行中匹配的字符,这里就是把非打印、非换行的字符替换成空,然后打印处理后的行。直接在操作前通过管道过滤
如果你不想生成新文件,也可以在后续操作前直接通过管道过滤内容。比如你要搜索某个关键词,就可以这么写:cat your_file.txt | tr -cd '\040-\176' | grep "你的关键词"这样
grep处理的就是已经过滤掉不可见字符的内容,和cat显示的完全一致。
内容的提问来源于stack exchange,提问作者Josef Klimuk
相关产品推荐
相关产品推荐

