J'ai un script que quelqu'un de SO a aimablement fourni pour résoudre un problème que j'avais, Cependant, j'ai quelques problèmes pour l'obtenir travailler sur OSX.OSX, G/AWK, Bash - "déclaration illégale, chaîne non terminée" et pas de sortie de fichier
gawk --version
GNU Awk 3.1.6
awk --version
awk version 20100208
La source d'origine est:
awk -F, -vOFS=, -vc=1 '
NR == 1 {
for (i=1; i<NF; i++) {
if ($i != "") {
g[c]=i;
f[c++]=$i
}
}
}
NR>2 {
for (i=1; i < c; i++) {
print $1,$2, $g[i] > "output_"f[i]".csv
}
}' data.csv
Quand je lance le script lui donne l'erreur suivante:
awk: syntax error at source line 12
context is print $1,$2, $g[i] > >>> "output_"f <<< [i]".csv
awk: illegal statement at source line 13
De l'apparence de celui-ci la variable de [i] n » t été modifié dans le fichier de sortie, mais je ne sais pas pourquoi.
Si je change AWK à gawk et exécuter le script original est ici la sortie:
gawk: cmd. line:11: print $1,$2, $g[i] > "output_"f[i]".csv
gawk: cmd. line:11: ^unterminated string
Je modifier la ligne correspondante pour fixer la chaîne non terminée
print $1,$2, $g[i] > "output_"f[i]".csv"
Ensuite, il traverse bien ne produit aucune erreur, mais il n'y a aucun fichier de sortie.
Des idées? J'ai passé la majeure partie de la nuit dernière et ce matin, je débordais.
Un fichier d'entrée exemple:
,,L1,,,L2,,,L3,,,L4,,,L5,,,L6,,,L7,,,L8,,,L9,,,L10,,,L11,
Title,r/t,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,neede d,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst,needed,actual,Inst
EXAMPLEfoo,60,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
EXAMPLEbar,30,6,6,12,6,7,14,6,6,12,6,6,12,6,8,16,6,7,14,6,7.5,15,6,6,12,6,8,16,6,0,0,6,7,14
EXAMPLE1,60,3,3,3,3,5,5,3,4,4,3,3,3,3,6,6,3,4,4,3,3,3,3,4,4,3,8,8,3,0,0,3,4,4
EXAMPLE2,120,6,6,3,0,0,0,6,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
EXAMPLE3,60,6,6,6,6,8,8,6,6,6,6,6,6,0,0,0,0,0,0,6,8,8,6,6,6,0,0,0,0,0,0,0,10,10
EXAMPLE4,30,6,6,12,6,7,14,6,6,12,6,6,12,3,5.5,11,6,7.5,15,6,6,12,6,0,0,6,9,18,6,0,0,6,6.5,13
Et l'exemple eteint devrait être
Donc, pour L1 un exemple eteint ressemblerait à ceci:
EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,6
EXAMPLE3,60,6
EXAMPLE4,30,6
Et pour L2:
EXAMPLEfoo,60,0
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,0
EXAMPLE3,60,6
EXAMPLE4,30,6
Si vous prenez la redirection et le nom du fichier, obtenez-vous la sortie sur stdout? –
Oups! Cette citation de fermeture manquante était * mon * typo dans [ma réponse] (http://stackoverflow.com/questions/2621549/creating-multiple-csv-files-from-data-within-a-csv-file/2622254#2622254). Je le réparerai. –
Retiré à la fois la redirection et le nom de fichier, rien d'autre qui est impair. Mettez également le fichier .csv à dos2unix pour supprimer les problèmes de fin de ligne et de fin de fichier, mais toujours pas de sortie. Ce qui pour être honnête je trouve vraiment étrange. – S1syphus