在带有正则表达式的 for 循环中使用 Sed

在带有正则表达式的 for 循环中使用 Sed

我正在尝试使用 for 循环修改 json 文件以循环示例名称列表,并使用 sed 修复这些示例名称。现在输入文件的子集是:

      "WA82671",
        "WA8267-technical-replicate-1":"AGCGTTGAT+CACATGTCC",
        "WA8267-technical-replicate-2":"TCATGGTCAAT+TGCAGTGAGC"
    "WA82671":{ "/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R1_1.fq.gz",
                "/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R2_1.fq.gz"
        "name":"WA82671",

我希望是这样;

      "WA8267",
        "WA8267-technical-replicate-1":"AGCGTTGAT+CACATGTCC",
        "WA8267-technical-replicate-2":"TCATGGTCAAT+TGCAGTGAGC"
    "WA8267":{"/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R1_1.fq.gz", 
              "/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R2_1.fq.gz"
        "name":"WA8267",

我尝试过以下命令; for i in $(cat Samplenames);执行 sed -er 's/$i\1/$i/g' 名称;但是,此命令无法进行任何更改。它只是打印 i 的每个值的整个文件。

答案1

由于您使用的文件路径带有 / 正斜杠,因此您应该在 sed 表达式中使用逗号。就像是...

for name in $(cat samplenames); do
    sed -e "s,${name}1,${name},g" sample --in-place
done

相关内容