私のデータファイルは
sdfsdfsdf
1 0.5000 0.5000 0.5000 8 7 90 135 90 135 1
2 0.5000 0.5000 0.0000 8 7 90 -45 90 -45 1
3 0.0000 0.5000 0.5000 8 7 90 225 90 225 1
4 0.5000 0.0000 0.5000 8 7 90 45 90 45 1
sdfsdfsdf
sdfsdfsdfsdfsdfsdfsdf
7列と9行2~5行を変更して結果は次のようになります。
sdfsdfsdf
1 0.5000 0.5000 0.5000 8 7 60 135 60 135 1
2 0.5000 0.5000 0.0000 8 7 60 -45 60 -45 1
3 0.0000 0.5000 0.5000 8 7 60 225 60 225 1
4 0.5000 0.0000 0.5000 8 7 60 45 60 45 1
sdfsdfsdf
sdfsdfsdfsdfsdfsdfsdf
sedまたはawkを使用してこれをどのように実行できますか?頑張った
awk 'NR>=2&&NR<=5{$7="60"}' input.dat > tmp && mv tmp input.dat
しかし、これはうまくいきません
答え1
努力する:
awk 'FNR==2,FNR==5{$7=$9=60};1' input.dat > tmp
答え2
次のようにスクリプトを変更します。
awk '{if (NR>=2&&NR<=5) $7=60; print}' input.dat > tmp && mv tmp input.dat
変形で観察された問題は、明示的な印刷句がないと、awkが入力行を印刷するためです。