Vonnegutian势在必行:用句号*正确替换分号*

时间:2014-09-18 20:03:34

标签: regex linux text sed

这个问题有点诙谐,但我也非常好奇地采取了正确和最干净的方式。

背景:Kurt Vonnegut说分号是毫无价值的标点符号。他们只是表明你已经上大学了。

无论如何,我知道如果我有一个文本(例如," test.txt")文件,其中包含一堆毫无价值的分号,这些分号与#34;密切相关"句子,我可以找到并替换为:

sed 's/;/./g' <test.txt >better.txt

将用句号代替所有那些讨厌的分号。但是,现在我遇到的问题是,所有新句点都跟着没有第一个字母大写的单词(因为一个分号后没有大写单词)。

是否有办法(希望通过sed)自动替换带有句点的文本文件中的所有分号并且还会自动将新插入句点后的单词的第一个字母大写?

谢谢, hft

1 个答案:

答案 0 :(得分:2)

简短回答。是的,一点没错。

以下是使用GNU sed

的方法
$ echo "hello;world;i;am;here" | sed 's/;\(.\)/.\U\1/g'
hello.World.I.Am.Here

对于散布的标准散文案例,其后是空间使用:

$ echo " Hello; world; blah" | sed 's/; *\(.\)/. \U\1/g'
Hello. World. Blah