【问题标题】:search for first occurence of a string and print its value in linux搜索第一次出现的字符串并在linux中打印它的值
【发布时间】:2016-07-27 08:06:22
【问题描述】:

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

{
    "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 命令获取短版本awk -F'"' '/\"shortversion\"/{print $10;}' read.version 此命令生成0.0.15 的输出,这是正确的,但是文件正在动态生成,需要您的宝贵帮助

【问题讨论】:

  • 请格式化您的问题:stackoverflow.com/editing-help
  • 为什么需要和sed一起使用?为什么“文件正在动态生成”很重要?您发布的 awk 脚本不会根据您发布的输入产生您所说的输出 - edit 您的问题本身是准确且一致的。
  • 我认为编辑应该被反转,直到并且除非 OP 确认输入确实是在单独的行中提供的。原始帖子暗示输入是在一行中提供的(因此使用$10)。

标签: linux awk sed


【解决方案1】:

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

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

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

【讨论】:

  • 嗨 Martel,感谢您抽出宝贵时间,我们可以不使用 json 解析器得到同样的结果
【解决方案2】:

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

【讨论】:

  • idk 你在想什么,但是当你使用 awk 时你永远不需要 sed,因为 awk 可以做任何 sed 可以做的事情。
  • 我认为我认为不全面。应该是:awk -F":" '/shortversion/{gsub(/"|,/,"",$2);print $2}' 数据文件 谢谢你的建议
猜你喜欢
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多