如何在awk字符串中去除首尾的方括号?
去除字符串首尾方括号的优化方案
我有一个名为dgt的变量,其值为[[:digit:]],需要去除该字符串外层的首尾方括号。目前采用的基础解决方案如下:
retval = substr(dgt, 2, length(dgt)-2)
更简洁的替代方案
Bash参数扩展写法:
利用shell的参数扩展特性,直接截取去掉首尾字符的子串,代码更简洁直观:retval="${dgt:1:-1}"这里
${dgt:1:-1}表示从字符串索引1的位置开始截取,直到倒数第1个字符结束,刚好剔除首尾的[和]。正则替换写法(适用于awk等工具):
通过正则匹配首尾的方括号,替换为中间的内容:retval = gensub(/^\[(.*)\]$/, "\\1", 1, dgt)正则
^\[(.*)\]$精准匹配以[开头、]结尾的字符串,捕获中间的所有内容,再将整个字符串替换为捕获到的内容,实现去括号的效果。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

