Как преобразовать первую букву n-го столбца csv-файла в верхний регистр? - PullRequest
1 голос
/ 28 марта 2019

Столбец 12 в CSV-файле весь в верхнем регистре. Иногда в столбце 3 слова, но по большей части 1 слово.

"one","two","three","four","five","six","seven","eight","nine","ten","eleven","TWELVE","thirteen"

Я хочу преобразовать четвертый столбец, чтобы только первая буква была заглавной

"one","two","three","four","five","six","seven","eight","nine","ten","eleven","Twelve","thirteen"

Я могу сделать весь столбец в нижнем регистре:

awk -F"," 'BEGIN{OFS=","} {$12 = tolower($12); print}' "$tmp_input3" > "$tmp_input4"

и эта команда дает мне:

"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen"

Как сделать, чтобы первая буква 12-го столбца была заглавной?

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Это может сработать для вас (GNU sed):

sed 's/[^",]\+/\L\u&/12' file

Это преобразует двенадцатую строку длиной один или несколько символов, которая не является ни запятой, ни двойными кавычками, в нижний регистр, за исключением первого символа, который указан в верхнем регистре.

1 голос
/ 28 марта 2019

Вы можете использовать toupper(substr($12,1,1)) substr($12, 2):

awk -F"," 'BEGIN{OFS=","} {$12 = toupper(substr($12,1,1)) substr($12, 2)}1' "$tmp_input3" > "$tmp_input4"

То есть вы переводите первый символ в верхний регистр с помощью toupper(substr($12,1,1)), а затем добавляете остальные символы, начиная с индекса 2.

См. онлайн awk демо :

s="1,2,3,4,5,6,7,8,9,10,11,abc def ghi,end"
awk 'BEGIN{FS=OFS=","} {$12 = toupper(substr($12,1,1)) substr($12, 2)}1' <<< "$s"
# => 1,2,3,4,5,6,7,8,9,10,11,Abc def ghi,end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...