尝试在2个分隔符之间获取string

我有一个问题,试图通过使用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从输出中删除模式的第一部分。