Text-Processing

在 sed 中使用正則表達式從文件中提取數據

  • May 12, 2022

如何使用 sed 作為參考進行f607b9ab-1452-4758-b047-6b620591211b提取cmrepo-222-02

["+--------------------------------------+---------------+----------+------+-------------+", "| ID                                   | Name          | Status   | Size | Attached to |", "+--------------------------------------+---------------+----------+------+-------------+", "| f607b9ab-1452-4758-b047-6b620591211b | cmrepo-222-02 | creating |    1 |             |", "| 5e9b27fd-46b4-4950-9dc1-a838be21aff7 | cmrepo-222-01 | creating |    1 |             |", "+--------------------------------------+---------------+----------+------+-------------+"]

使用sed

$ ref=cmrepo-222-02
$ sed "s/.* \([[:alnum:]-]\+\).*$ref.*/\1/" input_file
f607b9ab-1452-4758-b047-6b620591211b

它看起來像一個 json 字元串數組,表示某些 SQL 查詢的輸出行(用於人類消費,而不是用於後處理)。因此,您可以使用jq解碼jsonawk嘗試從該格式化表中提取數據。

<that-file jq -r '.[]' - |
 awk -F '[[:space:]]*[|][[:space:]]*' '$3 == "cmrepo-222-02" {print $2}'

但最好的辦法是首先進行正確的 SQL 查詢。

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