Remplacement valeur dans un fichier

Résolu/Fermé
yann747 Messages postés 128 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - 1 juil. 2014 à 09:13
yann747 Messages postés 128 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - 2 juil. 2014 à 20:05
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.
A voir également:

5 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 1/07/2014 à 09:23
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
2 juil. 2014 à 11:05
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
yann747 Messages postés 128 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
2 juil. 2014 à 07:06
Merci dubeck pour ta réponse, ça marche parfaitement !
0
yann747 Messages postés 128 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
Modifié par yann747 le 2/07/2014 à 09:16
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yann747 Messages postés 128 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
2 juil. 2014 à 20:05
Impeccable, Grand merci dubcek !!!
0