找到第一个字符串并搜索立即第二个字符串并捕获该版本

时间:2018-04-30 10:08:48

标签: bash sed

我有一个文件xyz.txt,我想找到搜索第一个字符串并立即出现第二个字符串并停在那里并使用sed从中提取版本。

xyz.txt将该

    "com.abc.def:ghi": {
        "sometext1": [
            "blah bla1",
            "blah bla2",
            "blah bla3"
        ],
        "string1": "1.1.xyz"
    },
    "**first.string.def:ghi.jkl**": {
        "sometext2": [
            "blah bla4",
            "blah bla5",
            "blah bla6"
        ],
        "**string1**": "**1.2.3.4**"
    },
    "com.zbc.def:ghi.jklm": {
        "sometext3": [
            "blah bla9",
            "blah bla10",
            "blah bla11"
        ],
        "string1": "5.6.7.9"
    },
    "com.mbc.def:ghi.jkn": {
        "sometext4": [
            "blah bla1",
            "blah bla2",
            "blah bla3"
        ],
        "string1": "10.1.23"
    },


   ..... so on 

我想要捕获第一个字符串(first.string.def:ghi.jkl)和第二个字符串(string1)的版本,并且应该提供版本号,如1.2.3.4

2 个答案:

答案 0 :(得分:0)

这可以使用GNU grep完成,选项documentation:数据行以0字节结尾,-z PCRE,-P仅匹配。

-o

可以根据实际结构改进正则表达式

答案 1 :(得分:0)

你可以试试这个sed

sed '/first.string.def:ghi.jkl/,/string1/!d
/string1/!d
s///
s/[^0-9]*\([0-9.]*\).*/\1/
' infile