Как заменить первую букву слова на прописную букву, ?Uppercasing First Letter of Words Использование SED
Trouble me
Gold rush brides
в
Trouble Me
Gold Rush Brides
Как заменить первую букву слова на прописную букву, ?Uppercasing First Letter of Words Использование SED
Trouble me
Gold rush brides
в
Trouble Me
Gold Rush Brides
Эта линия должна это сделать:
sed -e "s/\b\(.\)/\u\1/g"
Примечание: работает только с GNU sed. Если вы находитесь в OSX, FreeBSD и т. Д., Это ничего не делает. – ghoti
Вы описываете, что делает команда? Например, страница руководства не перечисляет это. –
Это говорит sed, чтобы преобразовать персонажа после каждого символа слова в верхний регистр. \ b - граница слов. Зайдите на сайт www.rexegg.com для получения некоторых полезных таблиц полезных символов регулярных выражений. – xizdaqrian
Использование awk
:
awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' file
Выход будет:
Trouble Me
Gold Rush Brides
Этот ответ наиболее переносимый. Спасибо. – yarek
Это, похоже, работает на busybox, тогда как sed-решения этого не делают. –
Используйте следующую команду sed для заглавной буквы первой буквы каждого слова.
echo -e "Trouble me \nGold rush brides" | sed -r 's/\<./\U&/g'
выход
Trouble Me
Gold Rush Brides
Это гораздо приятнее, когда мне не нужно делать «man sed», чтобы понимать ответы, потому что ответ содержит объяснение его содержания. Может быть, вы подумаете о том, чтобы дать объяснение для вашего ответа? –
Это так просто и отлично работает. – Urvashi
Я был апостроф так, отработку первое решение ...
[email protected]:~$ echo "BEST WESTERN PLUS BOB's INN" | tr "[A-Z]" "[a-z]" | sed -e "s/\b\(.\)/\u\1/g"
Best Western Plus Bob'S Inn
[email protected]:~$ echo "BEST WESTERN PLUS BOB's INN" | tr "[A-Z]" "[a-z]" | sed "s/\(\|^\)\(.\)/\1\u\2/g"
Best Western Plus Bob's Inn
это также помогает, если у вас есть заглавные буквы, но вы хотите, чтобы первая буква каждого слова была столицей – Botond
Другой сокращенный вариант с СЭД:
sed -e "s/\b./\u\0/g"
Я знаю, что вы сказали СЭД, но и для оболочки сценариев одной из самых простых и более гибкой для меня использует Python, который доступен в большинстве систем:
$ echo "HELLO WORLD" | python3 -c "import sys; print(sys.stdin.read().title())"
Hello World
Например:
$ lorem | python3 -c "import sys; print(sys.stdin.read().title())"
Officia Est Omnis Quia. Nihil Et Voluptatem Dolor Blanditiis Sit Harum. Dolore Minima Suscipit Quaerat. Soluta Autem Explicabo Saepe. Recusandae Molestias Et Et Est Impedit Consequuntur. Voluptatum Architecto Enim Nostrum Ut Corrupti Nobis.
Вы также можете использовать такие вещи, как strip()
удалить пробелы, или capitalize()
:
$ echo " This iS mY USER ${USER} " | python3 -c "import sys; print(sys.stdin.read().strip().lower().capitalize())"
This is my user jenkins
Дубликат - http://stackoverflow.com/questions/880597/how-can-i-capitalize-the-first-letter-of-each-word – Salgar
Зачем использовать СЭД для этого? bash может сделать это встроенным без каких-либо внешних инструментов. Пример: 'на слово в Trouble me; do printf '% s' "$ {word ^}"; сделанный; echo' –