awkを使用して変数に値を保存しますか?

awkを使用して変数に値を保存しますか?

両方の画像ファイルのヘッダ情報を読み取る命令の値を比較するif文を作成したいと思います。まず、コマンドの出力を変数に渡します。

~$ hd1=$(<command> <file1> | grep dim3)
~$ hd2=$(<command> <file2> | grep dim3)
~$ if [ $hd1 = $hd2 ];
    ~$ then
       etc

私のコマンドの出力には多くのフィールドがあります。

~$ <command> <file>
~$ sizeof_hdr     348
   data_type      INT16
   dim0           3
   dim1           256
   dim2           256
   dim3           70
   dim4           1
   dim5           1
   dim6           1
   dim7           1
   vox_units      mm
   time_units     s
   datatype       4
   nbyper         2
   bitpix         16
   pixdim0        0.000000
   pixdim1        0.828125
   pixdim2        0.828125
   pixdim3        2.199998
   pixdim4        4.177372
   pixdim5        0.000000
   pixdim6        0.000000
   pixdim7        0.000000
   vox_offset     352
   file_type      NIFTI-1+

だからここでは私が興味を持っているものを得るためにgrepを使用しています。問題は、私のコマンドの出力に「dim3」フィールドと「pixdim3」フィールドが含まれており、以下をgrep使用して両方のフィールドを印刷することです。

~$ dim3 70 pixdim3 2.19

実際には、2つのファイルの2番目の列を比較するだけです。試してみましたが、awkファイルではなく変数なので動作しません。とにかく2列目のみ印刷できますか?それとも、より良い方法はDim3フィールドをgrepするだけですか?

答え1

grep次に交換してみてください。

... | awk '$1 == "dim3" { print $2;}' 

これにより、最初のフィールドの結果がフィルタリングpim3され、2番目のフィールドのみが印刷されます。

関連情報