regex - 使用 grep (或类似的)在第一次匹配后获取字符串

标签 regex linux string grep

假设我有一些 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/

相关文章:

java - 价格的正则表达式 - Android

java - 用多个特殊字符拆分 : √(A&B)

php - 相当于 glob() ,它可以使用数组而不是文件系统

java - 上下文路径未在 tomcat 5 中设置

c - "fork()"后printf异常

python - 反转字符串 Python

java - 如何匹配模式的第一个实例?

regex - 在 Linux 中提取模式字符串和稍后提取另一个模式字符串的捷径是什么?

C++ 将文本文件中的字符串与行分开

python - 删除其他列中出现的单词,Pandas