linux sed脚本使每个单词的首字母大写

我正在尝试制作一个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/
}

解决方法

这个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

相关文章

在Linux系统中,设置ARP防火墙可以通过多种方法实现,包括使...
在Linux环境下,使用Jack2进行编译时,可以采取以下策略来提...
`getid`命令在Linux系统中用于获取当前进程的有效用户ID(EU...
在Linux环境下,codesign工具用于对代码进行签名,以确保其完...
Linux中的`tr`命令,其英文全称是“transform”,即转换的意...
Linux中的ARP防火墙是一种用于防止ARP欺骗攻击的安全措施,它...