![修复文本文件从双空格分隔变为制表符分隔](https://linux22.com/image/1147169/%E4%BF%AE%E5%A4%8D%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%BB%8E%E5%8F%8C%E7%A9%BA%E6%A0%BC%E5%88%86%E9%9A%94%E5%8F%98%E4%B8%BA%E5%88%B6%E8%A1%A8%E7%AC%A6%E5%88%86%E9%9A%94.png)
我一直在尝试过滤文本文件,但一直无法做到。我刚刚意识到我无法过滤它的原因是因为我认为被列为
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
,将所有空格更改为单个制表符。