Как преобразовать части строки в верхний регистр в файле - PullRequest
0 голосов
/ 29 мая 2019

У меня есть файл file.txt, и в нем есть строки ниже.Я хочу, чтобы имя очереди было преобразовано в верхний регистр, например: queuename=SP00245B

    # Queue name
    #
    queuename=sp00245b

Ответы [ 4 ]

1 голос
/ 29 мая 2019

Простое решение Perl:

perl -i -pe 's/^\s*queuename=\K(.*)/\U$1/' file.txt

(Удалите -i, если вы не хотите изменять файл на месте.)

1 голос
/ 29 мая 2019
awk '$1 == "queuename" {$2 = toupper($2)}1' FS== OFS== input-file

Обратите внимание, что это не удастся, если в строке 2 =, и только значения между первыми 2 = будут в верхнем регистре. Если это проблема, это легко исправить (оставлено в качестве упражнения для читателя).

0 голосов
/ 29 мая 2019

Вы также можете использовать sed преобразование \U для преобразования частей совпавшего шаблона с командой замены в верхний регистр.Чтобы скрыть все после знака '=', который вы можете использовать, например,

sed '/^queuename=/s/=.*$/\U&/' filename

Для редактирования файла на месте, включите параметр -i, например,

sed -i '/^queuename=/s/=.*$/\U&/' filename

Пример использования / Вывод

$ echo "queuename=sp00245b" | sed '/^queuename=/s/=.*$/\U&/'
queuename=SP00245B
0 голосов
/ 29 мая 2019

С GNU sed:

sed -i 's/\(^[[:blank:]]*queuename=\)\(.*\)/\1\U\2/' file.txt

При этом используются две группы захвата и последовательность \U для переключения подстановки заглавных букв для второй группы.

...