假设我有一些 JSON 文本:
{
"key1": "value1"
"key2": "value2"
"key3": "value3"
"key4": "value4"
"key5": "value5"
}
{
"key1": "value1"
"key2": "value2"
"key3": "value3"
"key4": "value4"
"key5": "value5"
}
我想要做的是找到“value1”,但只打印“value5”。将会有很多“value5”,但我只想打印它前面有“value1”(这将是一个唯一的字符串)的情况。我无法使用 grep -Ax & -Bx
因为我不想匹配后面的行,而是想打印字符串。
最佳答案
示例文件:
cat t
{
"key1": "value1"
"key2": "value2"
"key3": "value3"
"key4": "value4"
"key5": "value5"
}
{
"key1": "value6"
"key2": "value2"
"key3": "value3"
"key4": "value4"
"key5": "value5"
}
如果key1=value6
,则打印key5
中的数据
awk '/key1/ && /value6/ {f=1} f && /key5/ {print $NF;f=0}'
"value5"
关于regex - 使用 grep (或类似的)在第一次匹配后获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210630/