sed把文本中的不可见字符\3替换为\t

我有一个文本文件,每行两个字段,用\3分隔的,我想把\3替换成\t,使用如下命令:

sed 's/\\3/\t/g' a.txt

但是没有成功,请问应该怎么替换?我查了一些资料,感觉就是这样替换啊,不知错在哪里

阅读 11.9k
3 个回答

你想直接作用到文件a.txt的吧? 如果是, 需要加个-i参数:

sed -i 's/\\3/\t/g' test.txt

经确认, LZ实际想替换的是\3, 所以正确的答案应该是:

sed -i 's/\x3/\t/g' test.txt

test-sed.txt测试文件内容如下:

aaa\3bbb
ccccccccccccccc\3dddddddddddd

aaa\3bbb
ccccccccccccccc\3dddddddddddd
aaa\3bbb
ccccccccccccccc\3dddddddddddd
aaa\3bbb
ccccccccccccccc\3dddddddddddd
aaa\3bbb
ccccccccccccccc\3dddddddddddd

如果是用的Mac下,那么请用:

sed -i.bak 's/\\3/\\t/' test-sed.txt

如果是在Linux下,那么请用:

sed -i 's/\\3/\\t/' test-sed.txt
tlcr: 0 2014,6,1 (7) 13,56,38 tusooa-laptop ~ 
● perl -e 'print chr 3'|dog -v
^C%
tlcr: 0 2014,6,1 (7) 13,56,43 tusooa-laptop ~ 
● perl -e 'print "\3"'|dog -v 
^C%
tlcr: 0 2014,6,1 (7) 13,56,52 tusooa-laptop ~ 
● perl -e 'print "\003"'|dog -v
^C%
tlcr: 0 2014,6,1 (7) 13,56,55 tusooa-laptop ~ 
● perl -e 'print "\x03"'|dog -v
^C%
logo
101 新手上路
子站问答
访问
宣传栏