我有一个问题,试图通过使用linux命令获取2个分隔符之间的string。
我正在尝试使用sed从"AA CC [[TEST|LOL]] EE FF"
检索TEST|LOL
。
我已经使用了这个命令,但它给了我一个错误, invalid reference \1 on 1 s commands RHS
我现在使用的命令是:
echo "AA CC [[TEST|LOL]] EE FF" | sed 's/.*[[\(.*\)]].*/\1/g'
那么是否有任何修复这个命令的可能性?或者可能不使用IFS创build一个bash脚本?
你也必须逃避[
和]
$ echo "AA CC [[TEST|LOL]] EE FF" | sed 's/.*\[\[\(.*\)\]\].*/\1/g' TEST|LOL
如果你的grep版本支持,你可以使用Perl的正则表达式模式:
echo "AA CC [[TEST|LOL]] EE FF" | grep -Po '\[\[\K[^\]]*'
-o
开关意味着只有与图案匹配的部分输入被打印。 \K
从输出中删除模式的第一部分。