Hive默认的分隔符是\001,属于不可见字符,这个字符在vi里是^A
一个文本0000_0,直接cat内容如下:
320643204N2559613979
320828796N446323
320829214N38122627
vi打开,显示为如下:
320643204^AN^A25596^A13979
320828796^AN^A446^A323
320829214^AN^A3812^A2627
这个时候,按Esc键,输入:
%s
这个时候按下CTRL+V+A(会自动变成^A),
然后再输入/|/g,如下:
:%s/^A/|/g
替换为:
320643204|25596|13979
320828796|446|323
320829214|N|3812|2627
保存即可。
最简单的方法就是用sed(注意这个^A是按CTRL+V+A打出来的哦,直接输入的^A是不行的。)
sed -i 's/^A/|/g' 000000_0
^A在终端下通常按CTRL+V+A组成。
还有一种办法,就是用tr
tr '\001' '\|' <000000_0> 000000_1
把包含隐藏字符的文件000000_0保存为新的文件000000_1