Bonjour ,
j'utilise cette commandepour supprimer les lignes qui correspondent aux critères mais je n'y arrive pas .Code:for file in ./*.finale ; do awk '0.5<$5<2.9 ,0.5<$4<2.5' $file > $file{file%.*}.finale;done
merci pour votre aide
Version imprimable
Bonjour ,
j'utilise cette commandepour supprimer les lignes qui correspondent aux critères mais je n'y arrive pas .Code:for file in ./*.finale ; do awk '0.5<$5<2.9 ,0.5<$4<2.5' $file > $file{file%.*}.finale;done
merci pour votre aide
Bonjour :coucou:
Les opérateurs logiques, en informatiques, sont presque toujours binaires.
C'est-à-dire qu'ils prennent 2 opérandes en entrée pour fournir une sortie.
Donc tu lui donnes des encadrements qu'il ne peut pas comprendre.
Coupe ta commande pour avoir des relations binaires:
(0<x ET x<5) ET/OU (3<x ET x<73)
Le ET s'écrit &&.
LE OU s'écrit ||.
petit point lexical :
il ne s'agit pas d'un tri, qui consiste à ordonner des éléments,
mais d'un crible, qui, lui, consiste à retenir (ou à laisser passer :!:) des éléments.
ca ne fonctionne pas , pensez vous que c'est du au fait que mon fichier est en ASCII ?
peux-tu le mettre en pièce jointe, qu'on puisse faire quelques tests, ainsi que le résultat correspondant attendu ?
:D et surtout le code. Car on n'a pas encore vu le code fonctionnel de ta part.
A priori, non.Citation:
pensez vous que c'est du au fait que mon fichier est en ASCII ?
j'ai finalement réussi merci à tous , mais je ne comprends pas la notation $file{file%.*} dans la boucle , comment faire pour que le fichier final ait le meme nom que celui de départ ?
C'est normal. Le nom de fichier de sortie n'a aucun sens.
Il faut 2 ou 3 instructions.
- Une pour mettre le traitement du fichier 1 dans le fichier 2.
(c'est ce que tu fais)
Code:commande fichier1 > fichier2
- Une pour écraser le fichier 1 avec le fichier 2.
Code:cat fichier2 > fichier1
- Une (optionnelle) pour supprimer le fichier 2.
Code:rm fichier2
ou alors :pas besoin de boucle for.Code:gawk -i inplace 'les commandes awk' globShell.qui.match*