用于分隔符之间的捕获组的 sed 正则表达式

Son*_*oat 5 linux command-line sed shell-script regular-expression

我有一个两行文件,我正在尝试使用 sed 从 bash 脚本中获取一些信息。

# File Comment
PrefixForInformation {information to be captured}
Run Code Online (Sandbox Code Playgroud)

我需要获取大括号之间的信息,但不包括大括号。我有 PCRE regex/{(.*)}/或者\s{([^}]*)它似乎可以在Online Regex 101 中工作,但我无法将其转换为有效的 sed 配置。

Joh*_*024 4

$ sed -n 's/.*{\(.*\)}.*/\1/p' file
information to be captured
Run Code Online (Sandbox Code Playgroud)

怎么运行的

  • -n

    这告诉 sed 不要打印任何内容,除非我们明确要求它打印。

  • s/.*{\(.*\)}.*/\1/p

    此替代命令将两个花括号之间的所有内容捕获为组 1。整行被替换为组 1,表示为\1。最后的p告诉 sed 如果匹配,它应该打印结果。