sedで正規表現を使用してファイルからデータを抽出する

sedで正規表現を使用してファイルからデータを抽出する

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 |             |", "+--------------------------------------+---------------+----------+------+-------------+"]

答え1

これは、一部のSQLクエリの出力行を表すjson文字列の配列のように見えます(後処理ではない人が使用するためのものです)。したがって、jqデコードを使用jsonしてawkその形式のテーブルからデータを抽出できます。

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

しかし、まず正しいSQLクエリを実行することをお勧めします。

答え2

使用sed

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

関連情報