使用 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

我真的只需要比较两个文件的第二列。我尝试使用awk,但它不起作用,因为它们是变量而不是文件。无论如何,有没有只打印第二列,或者更好的是只 grep dim3 字段?

答案1

尝试替换grep

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

这将过滤掉第一个字段的结果pim3,并且仅打印第二个字段。

相关内容