Comment faire pour exécuter une .awk fichier?
Je suis de la conversion d'un CSV fichier dans un format de tableau, et j'ai écrit un script AWK et enregistré comme mon.awk. Voici mon script:
#AWK for test
awk -F , '
BEGIN {
aa = 0;
}
{
hdng = "fname,lname,salary,city";
l1 = length($1);
l13 = length($13);
if ((l1 > 2) && (l13 == 0)) {
fname = substr($1, 2, 1);
l1 = length($3) - 4;
lname = substr($3, l1, 4);
processor = substr($1, 2);
#printf("%s,%s,%s,%s\n", fname, lname, salary, $0);
}
if ($0 ~ ",,,,")
aa++
else if ($0 ~ ",fname")
printf("%s\n", hdng);
else if ((l1 > 2) && (l13 == 0)) {
a++;
}
else {
perf = $11;
if (perf ~/^[0-9\.\" ]+$/)
type = "num"
else
type = "char";
if (type == "num")
printf("Mr%s,%s,%s,%s,,N,N,,\n", $0,fname,lname, city);
}
}
END {
} ' < life.csv > life_out.csv*
Comment puis-je exécuter ce script sur un serveur Unix? J'ai essayé d'exécuter ce mon.awk fichier à l'aide de cette commande:
awk -f my.awk life.csv
Vous devez vous connecter pour publier un commentaire.
Le fichier que vous donnez est un script shell, pas un programme awk. Donc, essayez de
sh my.awk
.Si vous souhaitez utiliser
awk -f my.awk life.csv > life_out.cs
, puis retirezawk -F , '
et la dernière ligne du fichier et ajouterFS=","
dansBEGIN
.tail -f
dans unawk
script shell? J'ai donc pu queue d'un fichier journal, puis faire un traitement avec awk, puis les afficher à l'écran?Si vous mettez
#!/bin/awk -f
sur la première ligne de votre script AWK, c'est plus facile. Plus, puis les éditeurs comme Vim et ... va reconnaître le fichier comme un script AWK et vous pouvez coloriser. 🙂Ensuite, vous pouvez appeler votre script AWK comme ceci:
après la modification du fichier exécutable en cours d'exécution, par exemple:
Mettre la partie de
BEGIN....END{}
à l'intérieur d'un fichier et nommez-le comme mon.awk.Et puis l'exécuter comme ci-dessous:
Aussi je vois un séparateur de champ comme
,
. Vous pouvez ajouter que dans le bloc begin de la .awk fichierFS=","