usando a função prinf para padrões repetidos

0

Eu tenho códigos que acrescentam os padrões no arquivo de texto w.r.t. a entrada do usuário da seguinte forma:

echo -n "WHICH STATIONS?"
read station
awk -v input="$station" '
 BEGIN {
        n = split(tolower(input), user)     
         pattern=  "force %-4s npos 0. .0001\n"       
    }
    {print}
    /<< write after this line >>/ {
        for (i=1; i<=n; i++)
             printf pattern, user[i]
        exit
    }
' ./data > data_2

deixe assumir que a entrada do usuário abcd ab12 , em seguida, comandos anexa linhas abaixo;

force abcd npos 0. .0001
force ab12 npos 0. .0001

Eu preciso adicionar epos e upos strings para cada entrada para linhas separadas como segue (para as mesmas entradas como no exemplo acima);

force abcd npos 0. .0001
force abcd epos 0. .0001
force abcd upos 0. .0001
force ab12 npos 0. .0001
force ab12 epos 0. .0001
force ab12 upos 0. .0001

Como posso modificar a opção pattern para anexar essas linhas ao arquivo de dados?

    
por deepblue_86 20.12.2015 / 20:49

1 resposta

1

Isso é o que eu entendi da informação dada por você:

awk -v input="$station" '
BEGIN {
    n = split(tolower(input), user)     
     pattern=  "force %-4s npos 0. .0001\n"       
}
{print}
{
    for (i=1; i<=n; i++){
         print "force " user[i] " epos 0. .0001" 
         print "force " user[i] " upos 0. .0001" 
   }
}
' data

Em for , o loop para cada usuário epos e upos strings estão sendo impressos conforme sua necessidade.

    
por snoop 20.12.2015 / 21:57