每行首字母大写
Capitalize first letter of each line
我有如下列表:
david
Sam
toNy
3matt
5$!john
我希望将每行中第一个出现的字母大写。因此,如果该行不是以字母开头,则转到下一个可能的字母并将大写。所以上面的例子应该输出:
David
Sam
ToNy
3Matt
5$!John
我尝试了以下方法,但如果该行以数字或符号开头,它不会将第一次出现的字母大写:
sed 's/^\(.\)/\U/' myfile.txt > convertedfile.txt
我已经在这个网站上搜索了答案,他们都给出了与上面那行相同的问题
您可以使用
sed 's/[[:alpha:]]/\U&/' myfile.txt > convertedfile.txt
这里,s/[[:alpha:]]/\U&/
找到第一个字母(用[[:alpha:]]
),用\U
运算符大写(&
代表整个匹配,匹配的字母).由于没有 /g
标志,因此只有第一次出现(每行)受到影响。
s='david
Sam
toNy
3matt
5$!john'
sed 's/[[:alpha:]]/\U&/' <<< "$s"
输出:
David
Sam
ToNy
3Matt
5$!John
我有如下列表:
david
Sam
toNy
3matt
5$!john
我希望将每行中第一个出现的字母大写。因此,如果该行不是以字母开头,则转到下一个可能的字母并将大写。所以上面的例子应该输出:
David
Sam
ToNy
3Matt
5$!John
我尝试了以下方法,但如果该行以数字或符号开头,它不会将第一次出现的字母大写:
sed 's/^\(.\)/\U/' myfile.txt > convertedfile.txt
我已经在这个网站上搜索了答案,他们都给出了与上面那行相同的问题
您可以使用
sed 's/[[:alpha:]]/\U&/' myfile.txt > convertedfile.txt
这里,s/[[:alpha:]]/\U&/
找到第一个字母(用[[:alpha:]]
),用\U
运算符大写(&
代表整个匹配,匹配的字母).由于没有 /g
标志,因此只有第一次出现(每行)受到影响。
s='david
Sam
toNy
3matt
5$!john'
sed 's/[[:alpha:]]/\U&/' <<< "$s"
输出:
David
Sam
ToNy
3Matt
5$!John