我想做一个 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
,并且仅打印第二个字段。