sed删除文本的不同部分

时间:2013-10-20 12:10:22

标签: regex text sed escaping

我正在尝试操纵ZDT格式的词汇表,即:Traditional Characters \t Simplified Characters \t Pinyin \t English \n。我想在行的开头摆脱传统字符,所以我试图用sed 's/^[^\t]*\t//g' input.txt > output.txt删除它们但是这让我无法接近我想要的结果,因为在某些行中,一切都在英语部分的某个地方被删除,在其他行中没有任何内容被删除,我无法找出一个模式。

我认为RegEx是正确的,因为我已经测试了here,而Sublime Text 2也按预期使用它。这有什么问题?

编辑:
input.txt http://pastebin.com/fRemVPyT的开头 output.txt http://pastebin.com/EJkszFNF

的开头

1 个答案:

答案 0 :(得分:2)

并非所有sed版本都喜欢\t。尝试使用文字制表符。您可以创建一个包含以下标签的bash变量:

export TAB=$'\t'

也许是这样的:

sed "s/^[^$TAB]*$TAB//g" input.txt > output.txt