我如何使用 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
它看起来像一个 json 字符串数组,表示某些 SQL 查询的输出行(供人类使用,而不是后处理)。因此,您可以使用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