shell - linux shell - 在语料库中向不以句号结尾的行末尾添加句号(句号)

标签 shell text sed awk end-of-line

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

最佳答案

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.

关于shell - linux shell - 在语料库中向不以句号结尾的行末尾添加句号(句号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904736/

相关文章:

amazon-web-services - 如何从 shell 脚本检查给定的 Amazon S3 key 是否存在

macos - 如何在 Mac/UNIX Shell 脚本的 osascript 提示对话框中隐藏密码

shell - 使用 shell32.dll 声明函数 Excel Vba

awk sed 根据上一行替换行上的空格

awk:对最后一个单词的文本 block 进行分组在两个文本文件中都很常见

linux - 从 Expect 捕获返回码

string - 是否有可用于测试 Unicode 相关算法的测试?

python - 如何在python中读取文本文件的任意行?

wpf - Tablet PC/WPF 文本框错误 - 任何解决方法?

linux - 使用 sed 命令,替换行,但不替换匹配的模式