搜索字符串的第一次出现并在linux中打印其值

时间:2016-07-27 08:06:23

标签: linux awk sed

您好我在文件中使用以下内容,我希望打印短版的值,

{
    "app_versions": [
        {
            "version": "15",
            "shortversion": "0.0.15",
            "title": "java expert",
            "timestamp": 1469530069,
            "appsize": 3436229,
            "notes": ,
            "mandatory": false,
            "external": false,
            "device_family": null,
            "id": 9,
            "app_id": 356250,
            "minimum_os_version": "4.1",
            ,
            {
                "version": "7",
                "shortversion": "0.0.7",
                "title": "java expert",
                "timestamp": 1469528889,
                "appsize": 3436225,
                ,
                {
                    "version": "3",
                    "shortversion": "0.0.3",
                    "title": "javaExpert",
                    "timestamp": 1469209202,
                    "appsize": 3420965,

如何使用sed打印第一次出现的短版本的值,我使用了以下awk命令来获取shortversion awk -F'"' '/\"shortversion\"/{print $10;}' read.version此命令正在生成0.0.15的输出,这是正确,但文件是动态生成的,需要您的宝贵帮助

2 个答案:

答案 0 :(得分:0)

使用命令行JSON解析器(如jq)解析JSON输入更加模块化。如果JSON对象树将来发生变化,维护脚本会更容易。

您可以使用以下内容获取shortversion数组的第一个元素app_versions

jq -r ". |  .app_versions[1].shortversion" your_file.json

答案 1 :(得分:0)

也许你可以改变限定符':';例如 awk -F“:”'/ shortversion / {print $ 2}'数据文件 然后使用'sed'替换','和''';