Linux

sed 正則表達式用於分隔符之間的擷取組

  • November 5, 2015

我有一個兩行文件,我試圖從使用 sed 的 bash 腳本中獲取一些資訊。

# File Comment
PrefixForInformation {information to be captured}

我需要獲取大括號之間的資訊,但不包括大括號。我有 PCRE 正則表達式,/{(.*)}/或者\s{([^}]*)似乎可以在Online Regex 101中使用,但我無法將其轉換為有效的 sed 配置。

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

這個怎麼運作

  • -n

這告訴 sed 不要列印任何東西,除非我們明確要求它列印。

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

此替代命令將兩個花括號之間的所有內容擷取為第 1 組。整行替換為第 1 組,記為\1。最後p的 sed 告訴 sed,如果匹配成功,它應該列印結果。

引用自:https://unix.stackexchange.com/questions/241116