0

スクリプトで次の行を使用しています。

foo=$1

bar=$(printf  ' , "%s" u ($1):($2) lw 8 ti' ${foo[@]} ${foo[@]} ${foo[@]} ${foo[@]}   )

bar=${bar:2}

echo $bar    

これにより、変数 bar の値として次の行が生成されます

"rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti

出力が次のようになるようにスクリプトを変更することは可能ですか?

"rdf_inter_fortran_05-25.xvg" u ($1):($2) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($3) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($4) lw 8 ti , "rdf_inter_fortran_05-25.xvg" u ($1):($5) lw 8 ti
4

2 に答える 2

1

printf 行を次のように変更します。

bar=$(printf ' , "%s" u ($1):($%s) lw 8 ti' ${foo[@]} "2" ${foo[@]} "3" ${foo[@]} "4" ${foo[@]} "5" )
于 2013-10-07T23:19:31.347 に答える
0

一部の $2 を新しい文字列に置き換えているようです。次の行を の前に挿入しますecho $bar

bar=$(echo $bar | sed 's/$2/$5/4; s/$2/$4/3; s/$2/$3/2;')

これにより、$2 の 4 回目、3 回目、および 2 回目のオカレンスがそれぞれ新しい値 $5、$4、および $3 に置き換えられます。

于 2013-10-07T15:37:37.853 に答える