Como converter o awk one-liner para o script standalone? [fechadas]

0

Como posso reescrever este awk one-liner como um script independente? Quero melhorar a legibilidade para me ajudar a entender como funciona.

awk 'BEGIN{FS=OFS=";"} NR==FNR{for(i=2;i<=7;i++) if($i!="\"\"") a[$1]=a[$1] FS $i;next} {n=split(a[$1],f,FS); if(n>7)n=7; for(i=2;i<=n;i++) $i=f[i]}1' csv{,}
    
por Polucho 29.10.2015 / 06:39

1 resposta

2

A sintaxe é desmarcada e não examinada, então não tenho ideia do que ela faz ou se funciona. Acabei de reformatar o one-liner como um script awk autônomo e adicionei alguns espaços em branco para melhorar a legibilidade. Se o one-liner original funcionasse, isso também deveria acontecer. se não, não vai.

#! /usr/bin/awk -f

BEGIN {FS=OFS=";"}

NR==FNR { 
  for(i=2;i<=7;i++) if($i!="\"\"") a[$1]=a[$1] FS $i;
  next
}
{
 n=split(a[$1],f,FS);
 if(n>7)n=7;
 for(i=2;i<=n;i++) $i=f[i]
}
1

Salve-o em um arquivo (por exemplo, myscript.awk ), torne-o executável ( chmod +x myscript.awk ) e execute-o como:

./myscript.awk csv{,}
    
por 29.10.2015 / 07:15

Tags