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파일이 아니라 변수이기 때문에 작동하지 않습니다. 어쨌든 두 번째 열만 인쇄할 수 있습니까? 아니면 더 나은 방법은 단지 Dim3 필드를 grep하는 것입니까?

답변1

grep다음으로 교체해 보세요 .

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

그러면 첫 번째 필드의 결과가 필터링 pim3되고 두 번째 필드만 인쇄됩니다.

관련 정보