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

ここでは、サブジェクトがMathsフィールド位置subpでありnrrNR +2値のあるsubj Maths)割り当てられている場合です。

関連情報