• bash语句替换文本,解析json linux文本处理,解析json,替换txt里的字符串,正则表达式


    bash语句替换文本,解析json

    #!/bin/bash
    # 这个脚本的目的是,
    # 拿到输入的json文件;
    # 解析json文件;
    # 然后保证 Docker镜像顺利执行;
    
    pwdPath=$0
    echo "Hello! $pwdPath script is running..."
    echo "###################################################################"
    echo "This script is written by (If you have any problems. Please contact @@.com)"
    
    jsonfilePath=$1 #用户输入的json路径
    # 如果没有前端输入的json文件 则宣布退出
    if [ ! "$1" ]; then
      echo "Usage: bash run_job.sh /Output/*.json|/Output/*.yaml /Input/[H5AD]"
      exit
    else
      echo "input json filename is $jsonfilePath"
      species=`cat $jsonfilePath | jq -r '.species'`
    
      if test $species = "human"
      then
        indexDirPath="/ssd1//PBMC_human/star"
        gtfFilePath="/ssd1//PBMC_human/genes.gtf"
      elif test $species = "monkey"
      then
        indexDirPath="/ssd1//PBMC_monkey/star"
        gtfFilePath="/ssd1//PBMC_monkey/genes.gtf"
      elif test $species = "rat"
      then
        indexDirPath="/ssd1//PBMC_rat/star"
        gtfFilePath="/ssd1//PBMC_rat/genes.gtf"
      else
        echo "species error"
      fi
    
      fastq1FilePath=`cat $jsonfilePath | jq -r '.fastq1'`
      fastq2FilePath=`cat $jsonfilePath | jq -r '.fastq2'`
      CellNum=`cat $jsonfilePath | jq -r '.CellNum'`
    
      echo "index dir path is $indexDirPath"
      echo "gtf file path is $gtfFilePath"
      echo "fastq1 file path is $fastq1FilePath"
      echo "fastq2 file path is $fastq2FilePath"
      echo "CellNum is $CellNum"
    
      #接下来是修改runScSpark.sh 并执行
      runScSparkFilename="runScSpark.sh"
    
      indexOld=$(grep -oP '(?<=-genomeDir\s).*(?=\s\\)' $runScSparkFilename)
      sed -i "s|$indexOld|$indexDirPath|g" $runScSparkFilename
    
      gtfOld=$(grep -oP '(?<=-gtf\s).*(?=\s\\)' $runScSparkFilename)
      sed -i "s|$gtfOld|$gtfFilePath|g" $runScSparkFilename
    
      fq1Old=$(grep -oP '(?<=-fq1\s).*(?=\s\\)' $runScSparkFilename)
      sed -i "s|$fq1Old|$fastq1FilePath|g" $runScSparkFilename
    
      fq2Old=$(grep -oP '(?<=-fq2\s).*(?=\s\\)' $runScSparkFilename)
      sed -i "s|$fq2Old|$fastq2FilePath|g" $runScSparkFilename
    
      cellNumOld=$(grep -oP '(?<=-cellNumber\s).*(?=\s\\)' $runScSparkFilename)
      sed -i "s|$cellNumOld|$CellNum|g" $runScSparkFilename
    
      #bash runScSpark.sh
    
    fi
    
    
    echo "###################################################################"
    echo "Finished!"
    
  • 相关阅读:
    【LeetCode】739 每日温度
    element show-overflow-tooltip 复制
    SpringMVC 05: SpringMVC中携带数据的页面跳转
    【Unity入门计划】Unity交互-实现玩家角色发射子弹攻击敌人
    AWS--多个VPC上封禁一个 域名,禁止所有主机访问这个域名
    Amazon EMR 上的 Alluxio 集成实践
    【Linux】程序地址空间回顾
    .NET的CancellationTokenSource和ManualResetEvent结合使用
    云计算的未来:云原生架构和自动化运维的崭露头角
    C#计算不规则多边形关系
  • 原文地址:https://blog.csdn.net/Hodors/article/details/126168075