Answers:
这样又快又脏?
$ grep -o -P '(?<=")[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}(?=")' input
30c962de-b448-40ac-ade8-da6a8f49ce88
查找"30c962de-b448-40ac-ade8-da6a8f49ce88"
带有固定长度和破折号-
位置的任何随机值,并用引号引起来,并将其打印出来。如果您也想坚持该"id":
零件,只需将其添加到前导报价条件中即可(?<=")
。
但是,如果这是JSON或其他任何理智的方法,则应考虑对此类数据使用适当的解析器(例如jq
或类似的数据)。
如果这实际上是JSON文档,则jq
无论数据格式如何,使用都会拉出字符串:
jq -r '.document[2].part.id' file.json
假设id
键是part
对象的一部分,而对象又是document
JSON数据结构顶层数组中特定元素的一部分。
或者,您可以提取所有 id
值:
jq -r '.. | select(type=="object" and has("id")) | .id' file.json
jq
(或任何其他JSON解析器)进行的查询依赖于在特定位置拉出或检查文档中的特定键/值。编写查询的方式高度依赖于JSON文档的结构。
尝试使用以下提到的sed命令,它也可以正常工作
命令: sed 's/.*:"//1' filename|sed 's/".*//g'
输出
sed 's/.*:"//1' filename |sed 's/".*//g'
30c962de-b448-40ac-ade8-da6a8f49ce88