查找 2 个字符串之间的所有内容 -- Sed

Ana*_*hay 3 shell awk grep sed

我有包含以下格式数据的文件。

{"default":true,"groupADG":["ABC","XYZ:mno"],"groupAPR":true}
{"default":true,"groupADG":["PQR"],"groupAPR":true} 
Run Code Online (Sandbox Code Playgroud)

我正在尝试将输出作为

"ABC","XYZ:mno"
"PQR"
Run Code Online (Sandbox Code Playgroud)

我尝试使用 sed 来做,但在某处我出错了。

 sed -e 's/groupADG":[\(.*\)],"groupAPR"/\1/    file.txt
Run Code Online (Sandbox Code Playgroud)

问候。

注意:如果有人对这个问题的评价是否定的,我也会要求给出同样的理由。由于我试图自己修复它,因为我无法做到,所以我把它贴在这里。我也给出了我的试验示例。

jar*_*rot 7

这是一种潜在的解决方案:

sed -n 's/.*\([[].*[]]\).*/\1/p' file.txt
Run Code Online (Sandbox Code Playgroud)

要排除括号:

sed -n 's/.*\([[]\)\(.*\)\([]]\).*/\2/p'
Run Code Online (Sandbox Code Playgroud)

此外,这可以使用 AWK:

awk -F'[][]' '{print $2}' file.txt
Run Code Online (Sandbox Code Playgroud)

请注意边缘情况(例如,如果同一行中有多个带方括号的字段,您可能需要不同的策略)