Преобразуйте заглавные слова только в нижний регистр, чтобы отменить капитализацию существительных - PullRequest
0 голосов
/ 21 января 2019

Дано:

$ cat input
Hello
Welcome
strIng
North Korea
USA
U.K.

Я хочу получить:

$ cat output
hello
welcome
strIng
North Korea
USA
U.K.

Как преобразовать заглавные слова * только в нижний регистр?

*: первая буква заглавная.

Примечание: я ищу команду, которая отменяет использование заглавных букв существительных, но не атакует аббревиатуры и странные слова.

Ответы [ 2 ]

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

A sed решение:

sed '/^[A-Z][^A-Z]*$/ {
/^./y/ABCEDEFGHIJKLMNOPQRSTUVWXYZ/abcedefghijklmnopqrstuvwxyz/
}' input.txt > output.txt

Проверено и подтверждено для работы на вашем примере. Изменить для работы с акцентированными символами (не уверен, насколько хорошо awk's toupper будет с ними работать).

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

что-то вроде этого будет охватывать входные данные выборки, но не уверен, что они соответствуют всем другим подразумеваемым условиям

$ awk '/^[A-Z][^A-Z]+$/{$1=tolower(substr($1,1,1)) substr($1,2)}1' file
hello
welcome
strIng
North Korea
USA
U.K.

если первый символ соответствует верхнему регистру, а любые последующие символы не соответствуют, преобразуйте первый символ в нижний регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...