Awk
返回對應括號之間的內容
我有一個包含所有類型括號的文件
{}[]()
- 適當地嵌套、打開和關閉。我想在字元串 (text:
) 之後返回匹配方括號內的內容。該文件的內容如下所示:.... { "text": [ { "string1": ["hello", "world"], "string2": ["foo", "bar"] }, { "string1": ["alpha", "beta"], "string2": ["cat", "dog"] } ], "unwanted": [ { "stuff": ["nonesense"] } ] } .... and so on
我想回來
{ "string1": ["hello", "world"], "string2": ["foo", "bar"] }, { "string1": ["alpha", "beta"], "string2": ["cat", "dog"] }
該文件是
json
類型,並且自始至終具有相似的結構。我想在text:
具體之後返回方括號中的內容。
您提供的不是有效的 JSON。將表達式括起來,修正其他錯誤,並添加一個反例:
{ "text": [ { "string1": ["hello", "world"], "string2": ["foo", "bar"] }, { "string1": ["alpha", "beta"], "string2": ["cat", "dog"] } ], "unwanted": [ { "stuff": ["nonesense"] } ] }
您可以使用 JSON 解析器來解析它,例如
jq
. 例如,這將挑選出text
數組:jq -c '.text[]' {"string1":["hello","world"],"string2":["foo","bar"]} {"string1":["alpha","beta"],"string2":["cat","dog"]}
或者
jq '.text[]' { "string1": [ "hello", "world" ], "string2": [ "foo", "bar" ] } { "string1": [ "alpha", "beta" ], "string2": [ "cat", "dog" ] }
這些在語法上是相同的;只是佈局略有不同。