我正在尝试创建一个sed脚本,它将成为每个
的第一个字母molly w. bolt 334-78-5443
walter q. bugg 984-49-0032
noah p. way 887-12-0921
所以我希望它看起来像这样:
Molly W. Bolt 334-78-5443
Walter Q. Bugg 984-49-0032
Noah P. Way 887-12-0921
到目前为止,我有以下脚本,但它只会大写它遇到的前两个单词,即。制作Molly W. bolt。我无法弄清楚如何修改脚本以使姓氏大写。我需要添加什么?
h
s/\(.\).*/\1/
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
G
s/\(.\)\n\(.\)\(.*\)/\1\3/
/ [a-z]/{
h
s/\([A-Z][a-z]* \)\([a-z]\).*/\2/
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
G
s/\(.\)\n\([A-Z][a-z]* \)\(.\)\(.*\)/\2\1\4/
}
答案 0 :(得分:5)
这个gnu sed one liner可以帮助你:
sed 's/\b./\u&/g' file
使用您的数据进行测试:
kent$ cat f
molly w. bolt 334-78-5443
walter q. bugg 984-49-0032
noah p. way 887-12-0921
kent$ sed 's/\b./\u&/g' f
Molly W. Bolt 334-78-5443
Walter Q. Bugg 984-49-0032
Noah P. Way 887-12-0921
答案 1 :(得分:4)
使用边界\b
和\U
一词大写:
sed 's/\b./\U&/g'