【问题标题】:linux shell - adding full stop (period) to end of lines which do not end with full stop, in a corpuslinux shell - 在语料库中将句号(句点)添加到不以句号结尾的行尾
【发布时间】:2013-04-01 01:09:21
【问题描述】:

我有一个很大的语料库,它在句子级别进行分段。这意味着每一行包含一个句子。其中一些行以句号(句点)结尾,有些则没有。 我正在寻找一种有效的方法来在不以一个结尾的行的末尾添加句号。例如,受益于 sed 或 awk 来执行此任务的 shell 脚本。

【问题讨论】:

    标签: shell text sed awk end-of-line


    【解决方案1】:

    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 来做吗? :D
    • @fedorqui 不是一个真正的挑战哈哈:P
    • 或者一个 sed-ish awk:awk '{sub(/[^.]$/, "&.", $0); print}' file
    • 你是大师,我会再次+1:D
    • @progo 减脂awk '{sub(/[^.]$/,"&.")}1' file
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2020-02-16
    • 2012-12-16
    • 2019-04-18
    • 1970-01-01
    相关资源
    最近更新 更多