使用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

它看起来像一个 json 字符串数组,表示某些 SQL 查询的输出行(供人类使用,而不是后处理)。因此,您可以使用jq解码jsonawk尝试从该格式化表中提取数据。

<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

相关内容