我在一个巨大的文本文件上使用以下命令
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^@
我没有黑魔法......提前谢谢
答案 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'