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

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

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

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

阅读 12.1k
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%
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进