如何用jq编写通用规则移除字符串首尾包裹的单引号
jq移除字符串首尾单引号的通用实现方案
方案1:使用ltrimstr+rtrimstr(适合仅首尾各1个单引号的场景)
直接调用jq内置的首尾修剪函数,写法简单易读:
# 表达式写法 ltrimstr("'") | rtrimstr("'")
使用示例:
# 输入为"'mysql'",执行命令 echo "\"'mysql'\"" | jq '. | ltrimstr("'\'") | rtrimstr("'\'")' # 输出结果 "mysql"
方案2:使用gsub正则匹配(通用场景,支持移除首尾多个连续单引号)
用正则匹配开头、结尾的单引号批量替换,适配性更强:
# 仅移除首尾各1个单引号 gsub("^'|'$"; "") # 如需移除首尾所有连续的单引号(例如'''mysql'''转为mysql),使用以下写法 gsub("^'+|'+$"; "")
使用示例:
# 输入为"''mystring''",执行命令 echo "\"''mystring''\"" | jq '. | gsub("^'\''+|'\''+$"; "")' # 输出结果 "mystring"
内容的提问来源于stack exchange,提问作者mifogon
相关产品推荐
相关产品推荐

