awk/sed에서 일치하는 열 이름을 기반으로 열 값을 인쇄합니다. [중복]

awk/sed에서 일치하는 열 이름을 기반으로 열 값을 인쇄합니다. [중복]

쉘 스크립트에서 일부 명령을 실행하면 다음과 같은 출력이 표시됩니다.

Name      English    Maths    science   Social studies
------    --------  --------  -------- ---------------
James     20        25        30        40

(many values)
(or)

Roll Num   Name     English   Maths   science   Social studies
---------  ----    --------  -------  --------  ---------------
  1        James     20        25        30        40

(Many values)

열 헤더를 기준으로 인쇄된 값을 일치시키고 싶습니다.

Example:
cmd(matching Maths) test.txt

o/p:25

awk몇 가지 명령을 시도했지만 sed올바른 출력을 얻지 못했습니다.

누구든지 이것을 얻는 방법을 도와 줄 수 있습니까?

답변1

    awk -v subj="Maths" '{
    for(n=1;n<=NF;n++){
      if ($n==subj){
        subp=n;nrr=NR+2
   }};
   if(NR==nrr){
      print $subp
   }}' test.txt

여기서는 subject가 Maths필드 위치 subp이고 nrr( NR +2값이 있는 subj Maths) 할당되는 경우입니다.

관련 정보