查找2个字符串之间的所有内容–Sed
我有包含以下格式数据的文件。
{"default":true,"groupADG":["ABC","XYZ:mno"],"groupAPR":true}
{"default":true,"groupADG":["PQR"],"groupAPR":true}
我正在尝试将输出作为
"ABC","XYZ:mno"
"PQR"
我尝试使用 sed 来做,但在某处我出错了。
sed -e 's/groupADG":[(.*)],"groupAPR"/1/ file.txt
问候。
注意:如果有人对这个问题的评价是否定的,我也会要求给出同样的理由。由于我试图自己修复它,因为我无法做到,所以我把它贴在这里。我也给出了我的试验示例。
回答
这是一种潜在的解决方案:
sed -n 's/.*([[].*[]]).*/1/p' file.txt
要排除括号:
sed -n 's/.*([[])(.*)([]]).*/2/p'
此外,这可以使用 AWK:
awk -F'[][]' '{print $2}' file.txt
请注意边缘情况(例如,如果同一行中有多个带方括号的字段,您可能需要不同的策略)