我试图提取以下形式的字符串:
[["abc"]] --> abc
所以我写了echo "[[\"abc\"]]" | sed -e 's/\[\[\"//g' | sed -e 's/\"\]\]//g'
它工作正常,但看起来非常丑陋。我非常确定对于这样一个简单的案例,应该有一个更整洁的解决方案吗?
您能为此建议一些sed
或awk
增强功能吗?
答案 0 :(得分:3)
您可以将单个替换项与捕获组一起使用:
echo '[["abc"]]' | sed 's/\[\["\([^"]*\)"\]\]/\1/g'
您也不需要在正则表达式中转义"
。
答案 1 :(得分:2)
对于sed
,使命令更加简洁的一种方法是使用捕获组和反向引用:
echo "[[\"abc\"]]" | sed -e 's/\[\["\(.*\)"\]\]/\1/g'
> abc
答案 2 :(得分:2)
如果您只是想查找双引号之间的内容,请尝试
echo '[["abc"]]' | awk -F\" '{print $2}'
希望这会有所帮助
答案 3 :(得分:2)
只需删除不需要的字符
$ echo "[[\"abc\"]]" | tr -d '[]"'
abc