私は、ユーザーが行のファイル、列、値、およびIDを与える問題があります。私は、行の値を変更しようとしています分割されたファイルbashシェルの特定の列にあるファイルを編集する
ファイルの形式は次のとおりです。
F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8に
私の考えをそれを行うのはファイルを読み込み、各フィールドの値を配列に入れることです。それから私は、私があれば使用して変更したい行を見つけると私はしかしawk
while IFS=$'|t' read -r -a myArray
do
if [ $4 == ${myArray[0]} ]; then
echo "${myArray[1]} ${myArray[2]} ${myArray[4]}"
awk -v column="$5" -v value="$6"-F '{ ${myArray[column]} = value }'
echo "${myArray[1]} ${myArray[2]} ${myArray[4]}"
echo "${column} ${value}"
fi
done < $2
、私は何も変化しないことをやるときに使用します:列と値の引数は何も印刷されません。
アイデア
シェルでループを書くたびにあなたが間違ったアプローチをしているテキストを操作する。もっと多くの背景についてはhttp://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practiceを読んで本を読んでくださいEffective Awk Programming、4th Arnold Robbins著、Edition、それを正しく行う方法を学ぶ。 –