サンプル名のリストを繰り返し、sedを使用してそのサンプル名を変更するには、forループを使用してjsonファイルを変更しようとしています。これで、入力ファイルのサブセットは次のようになります。
"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",
私は$(cat Samplenames); do sed -er 's/$i\1/$i/g' names; で次のコマンドを試しましたが、このコマンドは変更に失敗しました。 iのすべての値に対してファイル全体を印刷します。
答え1
/スラッシュを含むファイルパスを使用しているため、sed式にカンマを使用する必要があります。まるで…
for name in $(cat samplenames); do
sed -e "s,${name}1,${name},g" sample --in-place
done