试图在2个分隔符之间获取字符串

时间:2015-01-10 18:09:12

标签: linux bash sed

我尝试使用linux命令在两个分隔符之间获取字符串时遇到了一些问题。

我正在尝试使用sed从TEST|LOL检索"AA CC [[TEST|LOL]] EE FF"

我已经使用过此命令,但它给了我一个错误,     invalid reference \1 on 1 s commands RHS

目前正在使用的命令:

echo "AA CC [[TEST|LOL]] EE FF" | sed 's/.*[[\(.*\)]].*/\1/g'

那么是否有可能修复该命令?或者可能在不使用IFS的情况下创建bash脚本?

2 个答案:

答案 0 :(得分:1)

您必须同时逃避[]

$ echo "AA CC [[TEST|LOL]] EE FF" | sed 's/.*\[\[\(.*\)\]\].*/\1/g'
TEST|LOL

答案 1 :(得分:0)

如果你的grep版本支持它,你可以使用Perl正则表达式模式:

echo "AA CC [[TEST|LOL]] EE FF" | grep -Po '\[\[\K[^\]]*'

-o开关意味着只打印与模式匹配的输入部分。 \K从输出中删除模式的第一部分。