试图在 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
从输出中删除模式的第一部分。
我在尝试使用 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
从输出中删除模式的第一部分。