我需要将字符串“TestString”更改为此格式“[tT] est [sS] tring”。
我尝试使用sed
:
testString="TestString"
sed 's/\([[:upper:]]\)/[&\1]/g' <<< "$testString" | tr '[[:upper:]]' '[[:lower:]]'
结果是:[tt]est[ss]tring
我想请你的帮助,找到一种方法,使第二个字符在括号大写。
谢谢。
您可以使用sed
,而无需使用tr
。以下版本适用于GNU的版本
sed -E 's/([[:upper:]])/[\L\1\u&]/g' <<< "$testString"
了解它是如何工作的
s/([[:upper:]])/[\L\1\u&]/g
# ^^^^^^^^^^^ Match the uppercase character
# ^^^^ lower case the matched letter
# ^^^^ upper case the matched letter
你也可以做s/([[:upper:]])/[\L\1\u\1]/g
,因为\1
和&
都是指搜索模式中的匹配组。
MacOS(FreeBSD)sed默认情况下不支持大小写转换函数\L
,\u
。您可以使用brew install gnu-sed
安装它并调用gsed
来启动它。