awk를 사용하여 첫 번째 행의 값을 기반으로 파일의 세 번째 행에서 두 개의 특정 열을 가져옵니다.

awk를 사용하여 첫 번째 행의 값을 기반으로 파일의 세 번째 행에서 두 개의 특정 열을 가져옵니다.

파일의 첫 번째 행의 첫 번째 열을 기준으로 파일의 세 번째 행에서 두 개의 열을 조건부로 선택하고 싶습니다.

파일 형식은 다음과 같습니다.

v1
shortdesc
value1 value2 value3 value4 ...

이 예를 사용하면 나는 value2and if를 원하고 value3그렇지 않으면 and를 v1원합니다 .value1value4

비슷한 방법을 사용하여 행과 열을 가져오는 방법을 알고 있지만 절을 awk 'FNR ==1 {print $1}사용하는 방법은 무엇입니까 if?

나에게 작동하지 않는 코드는 다음과 같습니다.

awk '{if("NR == 1 $1"=="v1") {FNR==3 print $2 "\t" $3;} else {FNR==3 print $1 "\t" $4;}}'

답변1

다음을 시도해 볼 수 있습니다.

awk 'NR == 1 { if ($1 == "v1") { p = 1; } } NR == 3 { if (p) { print $2 "\t" $3; } else { print $1 "\t" $4; } }' file

답변2

재미로:
sed

sed -n '1h
        3{
            x
            G
            s/v1\n\S* \(\S* \S*\).*/\1/p
            t
            s/.*\n\(\S*\) \S* \S*\( \S*\).*/\1\2/p
          }
         4Q' file

시험,머리,꼬리,자르다

[ $(head -1 file) == 'v1' ] &&
    field='2,3' ||
    field='1,4'
head -5 file | tail -1 | cut -d" " -f"$field"

세게 때리다

{ read v1
  read
  read a b c d e
  } <file
[ "$v1" == 'v1' ] && echo $b $c || echo $a $d

관련 정보