我有三种类型的字符串,我想在bash脚本中使用它们。我认为sed/awk是我最好的选择,但我不确定。考虑到以下要求,最好的方法是什么?
例如,用连字符分隔的taco -> Taco
例如,用下划线分隔的my-fish-tacos -> My-Fish-Tacos
例如my_fish_tacos -> My_Fish_Tacos
发布于 2012-08-04 05:36:56
不需要使用捕获组(尽管&
在某种程度上是捕获组):
echo "taco my-fish-tacos my_fish_tacos" | sed 's/[^ _-]*/\u&/g'
输出:
Taco My-Fish-Tacos My_Fish_Tacos
转义的小写字母"u“将匹配的子字符串中的下一个字符大写。
发布于 2012-08-04 05:33:40
使用awk:
echo 'test' | awk '{
for ( i=1; i <= NF; i++) {
sub(".", substr(toupper($i), 1,1) , $i);
print $i;
# or
# print substr(toupper($i), 1,1) substr($i, 2);
}
}'
发布于 2012-08-04 05:23:29
尝试以下操作:
sed 's/\([a-z]\)\([a-z]*\)/\U\1\L\2/g'
我使用GNU就可以了,但是我不认为BSD sed支持\U
和\L
。
https://stackoverflow.com/questions/11803395
复制相似问题