有没有办法在某个字符串中只大写/小写一个字符?
输入示例:
syslog_apr_24_30
syslog_mar_01_17
Run Code Online (Sandbox Code Playgroud)
期望的输出:
syslog_Apr_24_30
syslog_Mar_01_17
Run Code Online (Sandbox Code Playgroud)
请注意大写的月初。
我已经尝试过了,awk但我还不够好,无法让它发挥作用。
cho*_*oba 19
您可以\u在 GNU sed 中使用大写字母:
sed -e 's/_\(.\)/_\u\1/' input
Run Code Online (Sandbox Code Playgroud)
Perl 也这样做:
perl -pe 's/_(.)/_\u$1/' input
Run Code Online (Sandbox Code Playgroud)
\l 相反。
Awk 带有子字符串和 toupper 的版本
awk 'BEGIN{ FS=OFS="_"} {
cap=toupper(substr($2,1,1));
lower=substr($2,2,3);
$2 = cap lower; print
}' list.txt
Run Code Online (Sandbox Code Playgroud)
示例运行:
$ awk 'BEGIN{ FS=OFS="_"} {
cap=toupper(substr($2,1,1));
lower=substr($2,2,3);$2 = cap lower; print
}' list.txt
syslog_Apr_24_30
syslog_Mar_01_17
Run Code Online (Sandbox Code Playgroud)