awkはファイルから$ 2を印刷しませんか?

awkはファイルから$ 2を印刷しませんか?

このシェルスクリプトを実行しています。

 #!/bin/sh
 for line in `cat file.txt`
 do
 Am=`echo $line| awk '{print $1}'`
 Bm=`echo $line| awk '{print $2}'`
 #my command Am +Bm.......
 done

私は最初の行でこれを得ます。

  + cat file.txt
  + echo A
  + awk {print $1}
  + AM=A
  + echo A
  + awk {print $2}
  + Bm=

ご覧のとおり、Bm値を取得できません。

     $ cat file.txt
     A 19
     B 81
     C 76
     D 31

   $ awk '{print $2}' file.txt
    19
    81
    76
    31

  $ awk '{print $1}' file.txt
    A
    B
    C
    D

ベストアンサー1

for line in $(cat file.txt)ファイル内の各globは1つずつ繰り返されます。送信された入力にはawk入力列が1つしかないため、$2常に空です。

おすすめ記事