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对象的一部分,而对象又是documentJSON数据结构顶层数组中特定元素的一部分。
或者,您可以提取所有 id值:
jq -r '.. | select(type=="object" and has("id")) | .id' file.jsonjq(或任何其他JSON解析器)进行的查询依赖于在特定位置拉出或检查文档中的特定键/值。编写查询的方式高度依赖于JSON文档的结构。
                    尝试使用以下提到的sed命令,它也可以正常工作
命令: sed 's/.*:"//1' filename|sed 's/".*//g'
输出
sed 's/.*:"//1' filename |sed 's/".*//g'
30c962de-b448-40ac-ade8-da6a8f49ce88