先说下遇到的问题
- 在一次处理Linux中从kabana后台导出文件的过程中,发现文件中 有个特殊字符
^\
无法去除导致插入至mysql的表中后,字段中有未显示特殊字符。所以想在上传前先删去该特殊字符,再进行插入。 - 但是查询了很长时间无果,使用了很多方式,都没有成功。然后就找到了这个方法。
关于ASCII控制字符在linux中的显示问题
其实通过cat
无法看到文件中的特殊字符,只有在vim 或者vi中才能看到,在vi中输入^\
这个特殊字符的方式是在插入模式下,先输入Ctrl +v
,载输入Ctrl + \
。这个代表的其实就是 “ 文件分隔符(FS)” ,在菜鸟教程查到的相关信息如下图
附链接:ASCII 表-菜鸟教程链接
- 知道
^\
代表的编码意思后,接下来的事情就简单起来了,只需要使用send
命令将这个字符替换成空字符即可,命令如下:
sed -i 's/\x1C//g' filename
或者将更改后的数据生成到新文件
sed 's/\x1C//g' filename > newfilename
其中1C
代表的是要替换的字符的16进制标识,-i
是原地修改, 替换后的字符字填在/g
之前。