как прописать строку в определенной позиции, используя запятую в качестве разделителя? - PullRequest
0 голосов
/ 11 января 2019

Если у меня есть текстовый файл с запятой в качестве разделителя, как мне посчитать разделитель и перейти с нижнего на верхний регистр 3-го разделителя? Если у меня есть текстовый файл, как это:

alex pallex, bakerstreet 5, 87236, ducktales, 213445  
Donald Duck, weebfoot street 1313, 12345, duckburg, 212344

И я хочу иметь верхний регистр в строке после 3-й запятой, как мне это сделать с помощью sed. ducktales меняется на DUCKTALES и Дакбург в DUCKBURG Я знаю, что есть AWk, но мне нужно использовать Sed.

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Использование GNU sed:

$ sed 's/[^,]*/\U&/4' file
alex pallex, bakerstreet 5, 87236, DUCKTALES, 213445  
Donald Duck, weebfoot street 1313, 12345, DUCKBURG, 212344
0 голосов
/ 11 января 2019
$ cat file.txt
alex pallex, bakerstreet 5, 87236, ducktales, 213445
Donald Duck, weebfoot street 1313, 12345, duckburg, 212344

$ sed 's/\([^\,]*\,[^\,]*\,[^\,]*\,\)\([^\,]*\)/\1\U\2/' file.txt
alex pallex, bakerstreet 5, 87236, DUCKTALES, 213445
Donald Duck, weebfoot street 1313, 12345, DUCKBURG, 212344

Не уверен, что никакой побег не сработает, но вы можете попробовать:

sed 's/\([^,]*,[^,]*,[^,]*,\)\([^,]*\)/\1\U\2/' file.txt

В любом случае, это утомительно, если у вас есть GNU sed, Пес. Ответ великолепен.

0 голосов
/ 11 января 2019

Используя awk, вы бы:

$ awk 'BEGIN{FS=OFS=", "}{$4=toupper($4)}1' file
alex pallex, bakerstreet 5, 87236, DUCKTALES, 213445  
Donald Duck, weebfoot street 1313, 12345, DUCKBURG, 212344
...