我正在尝试使用 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