如何使用awk来实现这一点。我需要双引号和点号字符串中的每个单词都大写...
示例如下:
8,7,martin sanders, Executive director,,
9,8,bred simons,"manager, second career services",,
10,9,Kely bricks,ceo,,
...
所需输出应为:
8,7,Martin Sanders, Executive Director,,
9,8,Bred Simons,"Manager, Second Career Services",,
10,9,Kely Bricks,Ceo,,
我运行这个代码:
awk -FS"\"" -v FPAT='([^, ]*)|(\"[^\"]+\")' '{OFS=","}{for (i=1; i<=NF; i++) {
if (substr($i, 1, 1) == "\"") {
len = length($i)
$i = toupper(substr($i, 2,len - 2))""tolower(substr($i, 2, len))} {print $i} }}
'
9,8,Bred Simons, "manager, Second Career Services",,
我试着使用FPAT,但我真的不明白它是如何工作的。但这还不够我意识到对于有经验的用户来说这是一个简单的问题,但是我对awk没有太多的经验。请帮
我看了解释here
2条答案
按热度按时间wsxa1bj11#
因为你有GNU awk,我假设你也有GNU sed,所以使用GNU sed for
-E
,\w
and\u
:或者甚至只是(正如@sundeep在评论中指出的那样):
dohp0rv52#
将行中所有单词的第一个字母大写不是你想要的吗?