修复文本文件从双空格分隔变为制表符分隔

修复文本文件从双空格分隔变为制表符分隔

我一直在尝试过滤文本文件,但一直无法做到。我刚刚意识到我无法过滤它的原因是因为我认为被列为

Word '\t' phoneme
Word '\t' phoneme
Word '\t' phoneme
Word '\t' phoneme

并非总是以制表符分隔。有些条目以两个空格分隔,而其他条目则以制表符分隔。

是否可以将单词和音素之间的所有空格都改为制表符?

<oov> <oov>
A  AH0
A  EY1
A''S    EY1 Z
A'BODY  EY1 B AA2 D IY0
A'COURT EY1 K AO2 R T
A'D EY1 D
A'GHA   EY1 G AH0
A'GOIN  EY1 G OY1 N
A'LL    EY1 L
A'M EY1 M
A'MIGHTY    EY1 M AY1 T IY0
A'MIGHTY'S  EY1 M AY1 T IY0 Z
A'MOST  EY1 M OW2 S T
A'N'T   EY1 AH0 N T
A'PENNY EY1 P EH2 N IY0
A'READY EY1 R IY1 D IY0
A'RIGHT EY1 R AY2 T
A'RONY  EY1 R OW1 N IY0
A'S  EY1 Z
A'TER   EY1 T ER0
A'TERNOON   EY1 T ER0 N UW1 N

答案1

假设您想用单个制表符替换一行中的第一个空格序列,这可以使用 GNU sed 来实现:

$ sed -Ee 's/[ \t]+/\t/' lexicon
<oov>   <oov>
A       AH0
A       EY1
A''S    EY1 Z
A'BODY  EY1 B AA2 D IY0
...

在最后一个斜杠后添加一个g,将所有空格更改为单个制表符。

相关内容