使用bash脚本处理JSON

2024-09-21 05:45:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个bash脚本来做一些事情。现在它将一些文件复制到正确的目录中并运行一些命令。我需要这个bash脚本来编辑JSON文件。实际上,此脚本将向存在于文件.JSON. 我不能仅仅附加数据,因为JSON片段必须是现有JSON对象的一部分(应该添加到tracks数组中)。那么这可以用bash脚本来实现吗?我应该编写另一个python或R脚本来处理这个JSON逻辑,还是有更优雅的解决方案。谢谢你的帮助。在

file.JSON looks like this...
    {
       "formatVersion" : 1,
       "tracks" : [
          {
             "key" : "Reference sequence",
             "chunkSize" : 20000,
             "urlTemplate" : "seq/{refseq_dirpath}/{refseq}-",
             "storeClass" : "JBrowse/Store/Sequence/StaticChunked",
             "type" : "SequenceTrack",
             "seqType" : "dna",
             "category" : "Reference sequence",
             "label" : "DNA"
          },
          {
             "type" : "FeatureTrack",
             "label" : "gff_track1",
             "trackType" : null,
             "key" : "gff_track1",
             "compress" : 0,
             "style" : {
                "className" : "feature"
             },
             "storeClass" : "JBrowse/Store/SeqFeature/NCList",
             "urlTemplate" : "tracks/gff_track1/{refseq}/trackData.json"
          },
          {
             "storeClass" : "JBrowse/Store/SeqFeature/NCList",
             "style" : {
                "className" : "feature"
             },
             "urlTemplate" : "tracks/ITAG2.4_gene_models.gff3/{refseq}/trackData.json",
             "key" : "ITAG2.4_gene_models.gff3",
             "compress" : 0,
             "trackType" : null,
             "label" : "ITAG242.4_gene_models.gff3",
             "type" : "FeatureTrack"
          },
          {
             "urlTemplate" : "g-231FRL.bam",
             "storeClass" : "JBrowse/Store/SeqFeature/BAM",
             "label" : "g-1FRL.bam",
             "type" : "JBrowse/View/Track/Alignments2",
             "key" : "g-1FRL.bam"
          }
       ]
    }

the JSON snippet looks like this ...

      {
         "urlTemplate": "AX2_filtered.vcf.gz",
         "label": "AX2_filtered.vcf.gz",
         "storeClass": "JBrowse/Store/SeqFeature/VCFTabix", 
         "type": "CanvasVariants"
      }

Tags: 文件storekey脚本bashjsontypelabel
1条回答
网友
1楼 · 发布于 2024-09-21 05:45:03

帮你自己一个忙,安装^{},然后简单到:

jq -n 'input | .tracks += [inputs]' file.json snippet.json > out.json

在没有合适的解析器的情况下,试图修改结构化数据(如JSON)是一件愚蠢的事情,jq确实让它变得很容易。在

{不过,如果你把这件事做得更像是一个直接的任务,尽管如此:

^{pr2}$

相关问题 更多 >

    热门问题