Como posso fazer isso usando awk . Preciso que cada palavra na string entre aspas duplas e pontilhada seja maiúscula ...
Exemplos:
8,7,martin sanders, Executive director,,
9,8,bred simons,"manager, second career services",,
10,9,Kely bricks,ceo,,
...
a saída desejada deve ser como:
8,7,Martin Sanders, Executive Director,,
9,8,Bred Simons,"Manager, Second Career Services",,
10,9,Kely Bricks,Ceo,,
Eu executo este código:
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",,
Tento usar FPAT mas realmente não entendo como funciona... mas não foi suficiente. Sei que esta é uma pergunta simples para usuários experientes, mas não tenho muita experiência com o awk. Por favor ajude
Eu li a explicação aqui
Como você tem o GNU awk, presumo que você também tenha o GNU sed - usando o GNU sed para
-E
e :\w
\u
ou mesmo apenas (como @sundeep aponta nos comentários):
Colocar a primeira letra de todas as palavras na linha em maiúscula não fará o que você deseja?