我有一個如下的清單:
david
薩姆
toNy
3matt
5$!john
我希望將每一行中第一個出現的字母大寫。因此,如果該行不是以一個字母開始,那么就去找下一個可能的字母,并將其變成大寫。所以上面的例子應該輸出:
David
珊珊
ToNy
3馬特
5$!John
我試過以下方法,但如果行中以數字或符號開頭,它不會將第一個出現的字母大寫:
我試過以下方法。
sed 's/^(.)/U1/' myfile.txt > convertedfile.txt
我已經在這個網站上搜索了答案,他們都給出了與上面這一行相同的問題
uj5u.com熱心網友回復:你可以使用
sed 's/[[:alpha:]]/U&/' myfile.txt > convertedfile.txt
這里,s/[[:alpha:]]/U&/找到了第一個字母(與[[:alpha:]]),并且用U運算子大寫(&代表整個匹配,即匹配的字母)。由于沒有/g標志,只有第一次出現(每行)會受到影響。
請看在線演示:
s='david
珊珊
toNy
3matt
5$!john'
sed 's/[[:alpha:]]/U&/' << "$s"/span>
輸出:
David
珊珊
呼叫中心
3馬特
5$!John
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318117.html
標籤:
