Remplacement valeur dans un fichier

Résolu
yann747 Messages postés 128 Statut Membre -  
yann747 Messages postés 128 Statut Membre -
Bonjour,
je possède un fichier texte de ce format :


191.000 -60.500 1.57 229.27 0.0992 6.61 128.24
98.500 -60.500 1.62 343.83 0.0974 6.08 130.80
99.000 -60.500 1.67 939.22 0.0965 5.52 134.41
109.500 -60.500 1.73 134.25 0.0969 4.96 139.09
220.000 -60.500 1.79 229.25 0.0974 4.45 145.06
340.500 -60.500 1.85 724.59 0.0976 4.00 152.92
211.000 -60.500 1.91 920.46 0.0978 3.63 163.2

je voudrais enlever 300 au premier nombre (uniquement) , si il est supérieur à 100

la ligne 1 deviendrait :
-109.000 -60.500 1.57 229.27 0.0992 6.61 128.24,

la ligne 2 resterait inchangée etc ...

j'ai fait des essais avec :
awk '{print $1;}'

ainsi que la commande cut, mais je n'y suis pas arrivé, à cause notamment des comparaisons "float" / "string"
Merci d'avance de vos réponses.

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ awk 'BEGIN {OFS="\t"} $1 > 100 {$1-=300} {print}' fichier
    -109 -60.500 1.57 229.27 0.0992 6.61 128.24
    98.500 -60.500 1.62 343.83 0.0974 6.08 130.80
    99.000 -60.500 1.67 939.22 0.0965 5.52 134.41
    -190.5 -60.500 1.73 134.25 0.0969 4.96 139.09
    -80 -60.500 1.79 229.25 0.0974 4.45 145.06
    40.5 -60.500 1.85 724.59 0.0976 4.00 152.92
    -89 -60.500 1.91 920.46 0.0978 3.63 163.2
    2
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    comme ça ?
    $ awk 'BEGIN {OFS="    "} $1 > 100 {$1=sprintf("%-8.3f", $1-300)} {print}' fichier
    -109.000 -60.500 1.57 229.27 0.0992 6.61 128.24
    98.500 -60.500 1.62 343.83 0.0974 6.08 130.80
    99.000 -60.500 1.67 939.22 0.0965 5.52 134.41
    -190.500 -60.500 1.73 134.25 0.0969 4.96 139.09
    -80.000 -60.500 1.79 229.25 0.0974 4.45 145.06
    40.500 -60.500 1.85 724.59 0.0976 4.00 152.92
    -89.000 -60.500 1.91 920.46 0.0978 3.63 163.2
    1
  3. yann747 Messages postés 128 Statut Membre 2
     
    Merci dubeck pour ta réponse, ça marche parfaitement !
    0
  4. yann747 Messages postés 128 Statut Membre 2
     
    Juste un petit détail supplémentaire ...
    Est-il possible de garder la même mise en forme ?
    c'est à dire 3 décimales forcées, et les 4 espaces entre chaque colonne

    Par exemple sur la ligne 1 :

    -109.000    -60.500    1.57    229.27    0.0992    6.61    128.24
    au lieu de :

    -109 -60.500 1.57 229.27 0.0992 6.61 128.24

    Merci d'avance
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yann747 Messages postés 128 Statut Membre 2
     
    Impeccable, Grand merci dubcek !!!
    0