【发布时间】:2013-04-01 01:09:21
【问题描述】:
我有一个很大的语料库,它在句子级别进行分段。这意味着每一行包含一个句子。其中一些行以句号(句点)结尾,有些则没有。 我正在寻找一种有效的方法来在不以一个结尾的行的末尾添加句号。例如,受益于 sed 或 awk 来执行此任务的 shell 脚本。
【问题讨论】:
标签: shell text sed awk end-of-line
我有一个很大的语料库,它在句子级别进行分段。这意味着每一行包含一个句子。其中一些行以句号(句点)结尾,有些则没有。 我正在寻找一种有效的方法来在不以一个结尾的行的末尾添加句号。例如,受益于 sed 或 awk 来执行此任务的 shell 脚本。
【问题讨论】:
标签: shell text sed awk end-of-line
Sed 可能是最简单的方法:
$ cat file
sentence one
sentence two.
sentence three
$ sed 's/[^.]$/&./' file
sentence one.
sentence two.
sentence three.
在不以句点 [^.]$ 结尾的行上,将最后一个字符替换为匹配的最后一个字符,后跟句点 &.。您应该注意尾随空格可能包含句点作为最后一个可用字符的行。
编辑:
awk 我愿意:
$ awk '/[^.]$/{$(NF+1)="."}1' FS= OFS= file
sentence one.
sentence two.
sentence three.
【讨论】:
awk '{sub(/[^.]$/, "&.", $0); print}' file
awk '{sub(/[^.]$/,"&.")}1' file