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

Trying to get string between 2 delimiters

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

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

我用过这个命令,但它给了我一个错误, invalid reference on 1 s commands RHS

我目前正在使用的命令:

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

那么是否有可能修复该命令?或者创建一个 bash 脚本而不使用 IFS?

您还必须转义 []

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

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

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

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