Remplacement valeur dans un fichier

Résolu
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. Contributeur
    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
    1. Contributeur
      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
      1. Merci dubeck pour ta réponse, ça marche parfaitement !
        0
        1. 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
          1. Impeccable, Grand merci dubcek !!!
            0

            Discussions similaires

            question pix mot caché

            7 réponses