sed匹配模式\ tTEXT \ t无效

时间:2014-02-17 16:48:55

标签: regex bash sed text-processing

我在一个巨大的文本文件上使用以下命令

sed 's/\tEN-GB\t//g' "/home/ubuntu/0214/corpus/C.txt"

该文件在每行中包含[tab] EN-GB [tab],但我得到的是原始文本。我无法弄清楚为什么。 注意:当我使用's / \ t // g'时它可以工作,结果字符串是[很多无标签] EN-GB [很多无标签]每一行,标签都消失了。

更新:以下是cat -vet输出的有罪部分:

^@2^@0^@0^@7^@0^@1^@0^@4^@~^@1^@6^@3^@2^@4^@3^@^I^@^I^@0^@^I^@E^@N^@-^@G^@B^@^I^@T^@h^@e^@      ^@a^@d^@m^@i^@n^@i^@s^@t^@  

我没有黑魔法......提前谢谢

2 个答案:

答案 0 :(得分:3)

您的sed命令似乎正确,但文本文件中有一些空字符

运行此sed命令首先删除空值:

sed -i.bak 's/\x0//g; s/\tEN-GB\t//g' "/home/ubuntu/0214/corpus/C.txt"

答案 1 :(得分:1)

您可以使用ANSI-C引用来表示 TAB 字符:

sed 's/'$'\tEN-GB\t''//g' filename

编辑:cat -vet的输出表明您的输入中包含NULL字符。在将结果传递给上述命令之前删除它们。说:

tr -d '\x0' < filename | sed 's/'$'\tEN-GB\t''//g'