imprime o valor da coluna com base na correspondência do nome da coluna em awk / sed [duplicate]

1

No meu script de shell depois de executar alguns comandos, recebo a saída abaixo:

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)

Eu quero imprimir os valores com base em uma correspondência de cabeçalho de coluna.

Example:
cmd(matching Maths) test.txt

o/p:25

Já experimentei alguns comandos awk e sed , mas não obtive resultados adequados.

Alguém pode me ajudar como conseguir isso?

    
por Sai 09.11.2015 / 11:50

1 resposta

0

    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

Aqui, se o assunto for Maths , a posição do campo subp e nrr ( NR +2 , onde o valor para o subj Maths está) será atribuída.

    
por 09.11.2015 / 15:18

Tags