awkを使用して複数のファイルの特定のフィールドを変更する方法

awkを使用して複数のファイルの特定のフィールドを変更する方法

私はスクリプト言語に初めて触れました。同じ名前の形式(output1、output2など)を持つ複数の出力ファイルがあります。

各出力ファイルでは、レコードは次のパターンに従います。

"295534
4750
4 -0.28 -0.01 -0.03 0 0 0 0 1 425.1 -1 4 0
0 0.28 -0.01 -0.025 0 0 0 0 1 425.1 -1 4 0
0 0.28 -0.01 -0.02 0 0 0 0 1 425.1 -1 4 0
....."

私が望むのは、各ファイルの2行目のフィールドを100(4750/100など)に分割することです。どうすればいいですか?

どんなアドバイスでもいただければ幸いです。

ベストアンサー1

awk 'NR==2{ $0/=100 }1' output1 >output1.fixed

複数の入力ファイルに適用されます。

for file in ./output*; do
    awk 'NR==2{ $0/=100 }1' "$file" >fixed_"$file"
done

特定のフィールド(複数の場合)と2番目の行番号に変更を適用します。

for file in ./output*; do
    awk 'NR==2{ $1/=100 }1' "$file" >fixed_"$file"
done

$1最初のフィールド値を表し、変更したい他のフィールドに変更します。

おすすめ記事