我尝试使用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脚本?
答案 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
从输出中删除模式的第一部分。