2014-09-18 50 views
3

這個問題有點兒尷尬,但我也非常好奇正確和最乾淨的方式來做到這一點。Vonnegutian命令:用句號*正確替換分號*

背景:Kurt Vonnegut說分號是毫無價值的標點符號。他們所做的只是表明你已經上過大學。

不管怎樣,我知道,如果我有一個文本(例如,「的test.txt」)文件與一羣毫無價值分號分隔「密切相關」的句子,我可以做一個查找和替換爲:

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

這將用週期替換所有那些討厭的分號。然而,現在我有一個問題,那就是所有的新時期後面跟着沒有第一個字母大寫的詞(因爲在分號後沒有大寫一個詞)。

有沒有一種方法(希望通過sed)自動替換文本文件中的所有分號,並且還會自動在新插入的句點之後大寫單詞的第一個字母?

感謝, HFT

+0

在一行的末尾想一想分號。 – 2014-09-18 20:20:42

+0

我在上大學前很久就開始使用分號了。 – iamnotmaynard 2014-09-18 20:52:19

+0

@!maynard:你在pretension早熟。對你有好處。 – hft 2014-09-19 16:23:43

回答

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