2009-10-08 74 views
25

如何将单词的第一个字母替换为大写字母 使用SED的大写第一个字母的单词

Trouble me 
Gold rush brides 

Trouble Me 
Gold Rush Brides 
+1

复制 - http://stackoverflow.com/questions/880597/how-can-i-capitalize-the-first-letter-of-each-word – Salgar 2009-10-08 16:11:43

+2

为什么要使用sed的是什么? bash可以在没有外部工具的情况下进行内置。例如:'麻烦我的话;做printf'%s'“$ {word ^}”;完成;回声' – 2014-05-10 04:05:54

回答

50

此行应该这样做:

sed -e "s/\b\(.\)/\u\1/g" 
+14

注意:只适用于GNU sed。如果你在OSX,FreeBSD等,这没有任何作用。 – ghoti 2015-08-12 15:34:22

+0

你能描述一下命令在做什么吗?例如,手册页没有列出这个。 – 2017-03-25 03:18:26

+0

它告诉sed将每个单词边界后的字符转换为大写。 \ b是单词边界。请查阅www.rexegg.com以获取有用的正则表达符号的一些精彩表格。 – xizdaqrian 2017-05-08 08:01:41

13

使用awk

awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' file 

输出将是:

Trouble Me 
Gold Rush Brides 
+0

这个答案是最便携的。谢谢。 – yarek 2012-07-17 10:01:04

+0

这似乎在busybox上工作,而sed解决方案没有。 – 2014-11-07 16:56:49

5

使用以下sed命令来大写每个单词的第一个字母。

echo -e "Trouble me \nGold rush brides" | sed -r 's/\<./\U&/g' 

输出

Trouble Me 
Gold Rush Brides 
+4

因为答案中包含了对其内容的解释,所以当我不必为了解答案而做“人”时,情况就好多了。也许你会考虑为你的答案提供一个解释? – 2015-08-09 20:39:09

+0

它很简单,完美地工作。 – Urvashi 2017-02-10 06:11:13

4

我撇号左右,工作过的第一个解决方案...

[email protected]:~$ echo "BEST WESTERN PLUS BOB's INN" | tr "[A-Z]" "[a-z]" | sed -e "s/\b\(.\)/\u\1/g" 

最佳西方Bob的酒店

[email protected]:~$ echo "BEST WESTERN PLUS BOB's INN" | tr "[A-Z]" "[a-z]" | sed "s/\(\|^\)\(.\)/\1\u\2/g" 

最佳西方Bob's Inn

+2

如果你有大写字母,但是你只希望每个单词的第一个字母是大写 – Botond 2016-10-28 11:58:17

2

另一个较短版本的sed:

sed -e "s/\b./\u\0/g" 
1

我知道你说的sed,但是对于shell脚本的最简单的一个,对我更灵活的使用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 
相关问题