1)通过使用sed,如何删除字符串末尾和开头的所有冒号序列。例如,将“ :: trim ::: test ::”更改为“ trim ::: test”。
echo "::trim:::test::" | sed 's/:*//'
2)如何使用以下语法执行相同操作:
test="::trim:::test::"
echo ${test%:}
答案 0 :(得分:1)
在sed中,字符串的开头由^
匹配,字符串的末尾由$
匹配:
sed 's/^:*\|:*$//g'
参数扩展#
和%
仅在字符串的一端起作用,并且不能组合使用,因此我们需要两个命令:
shopt -s extglob
test=${test##+(:)}
test=${test%%+(:)}
extglob
选项启用与正则表达式中的+(:)
对应的:+
,即匹配一次或多次。 #
和%
被加倍以贪婪地匹配。