シェルスクリプトを使用してファイル内のすべての数値を分割する

シェルスクリプトを使用してファイル内のすべての数値を分割する

私のファイルには27の列と45000の行があります。

head test_1

    0   0   0   0   0   0   0   2   0   0   0   0   0   0   0   0   0   0   0   
    16  20  24  20  20  10  6   28  36  10  26  14  24  24  24  30  24  30  24  
    2   8   2   4   2   0   0   10  8   2   6   0   6   4   4   6   2   10  2   
    14  12  22  16  18  10  6   20  28  8   20  14  18  20  20  24  22  20  22  
    0   0   0   0   0   0   0   2   2   0   0   0   0   0   0   0   0   2   0   
    16  20  24  20  20  10  6   30  36  10  26  14  24  24  24  28  22  30  24  
    0   2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

シェルスクリプトを使用して各値を定数(ここでは2)に分割したいと思います。どうすればいいですか?似たようなことを試しましたが、awk -v c=2 '{ print $0/c }' test_1最初の列だけが印刷されます!

ベストアンサー1

はい、awk -v c=2 '{ print $0/c }' test_1各行全体を分割しようとするため、最初の列のみが印刷されますc。行を単一の数値に変換すると、数字以外のすべて、つまり最初のスペースとそれ以降のすべての内容が削除されます。

代わりに列を繰り返す必要があります。

awk -v c=2 '{ for (i = 1; i <= NF; ++i) $i /= c; print }' OFS='\t' test_1

このコードは単に各列の値をそれ自体で割った値を設定し、変更されたc値を含む行を印刷します。NFは現在行のフィールド(列)の数であり、$i列の値になりますi。最後に、OFS='\t'出力フィールド区切り記号をタブに設定します。

与えられたデータの結果は次のとおりです。

0       0       0       0       0       0       0       1       0       0       0       0       0       0       0       0       0       0       0
8       10      12      10      10      5       3       14      18      5       13      7       12      12      12      15      12      15      12
1       4       1       2       1       0       0       5       4       1       3       0       3       2       2       3       1       5       1
7       6       11      8       9       5       3       10      14      4       10      7       9       10      10      12      11      10      11
0       0       0       0       0       0       0       1       1       0       0       0       0       0       0       0       0       1       0
8       10      12      10      10      5       3       15      18      5       13      7       12      12      12      14      11      15      12
0       1       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0

おすすめ記事