Awk script

Bonjour,

J'ai un problème lors de l'exécution du script suivant:

#!/bin/bash
# fileinfo.sh

FICH=$1

cat $FICH | awk -F";" '{print $1 " " $3}' > temp
cat temp | awk '{print $2 " " $3 " " $1 " " $4}'>$FICH
rm temp


Je veux traiter un log du type :

1307727376600;55;49092	48643	-59	100
1307727376604;15;45088	50737	-67	100
1307727376608;16;46808	50737	-59	100


pour obtenir :
49092 48643 1307727376600 -59
45088 50737 1307727376604 -67
46808 50737 1307727376608 -59


Mais après exécution j'obtiens deux lignes vides à la suite à plusieurs endroits du fichier.
Merci d'avance pour votre aide

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. salut,

    qu'est -ce tu t'em... avec un fichier temporaire ?
    regarde comment fonctionne la fonction split, et les tableaux en awk.
    manuel Awk
    awk est un langage de script, tu n'es pas obligé de passer par bash pour l'utiliser.
    1. Contributeur
      Salut,

      $ cat fich
      1307727376600;55;49092  48643   -59     100
      1307727376604;15;45088  50737   -67     100
      1307727376608;16;46808  50737   -59     100
      
      $ awk -F';' '{ print $3,$4,$1,$5 }' < <(sed 's/\s\+/;/g' fich)
      49092 48643 1307727376600 -59
      45088 50737 1307727376604 -67
      46808 50737 1307727376608 -59

      ;-))