Remplacer des caractéres variable dans fichie

Résolu/Fermé
dom - 17 déc. 2010 à 15:16
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 17 déc. 2010 à 15:47
Bonjour,

Sur un systeme Linux, j'ai la chaine suivante dans un fichier (sur un nombre de ligne x)
Automatique OK cr50-740392.20100719:012504-0 97 S 741
Automatique OK cr50-740392.20100719:012504-2 98 S 741
Automatique OK cr50-740392.20100719:012506-0 91 S 741

Chaque champ est séparé par une tabulation.
Je veux avoir en sortie, grâce a un script shell un fichier de ce genre :

Automatique OK 97 S 741
Automatique OK 98 S 741
Automatique OK 91 S 741

Pour résumer, je veux remplacer la chaine crxxxxxxxxxxxxxxxxxx par rien lorsque le dernier champ est égal a 741 et ne rien faire dans les autres cas.
Je débute en shell , je pense que cela est possible avec sed mais j'avoue que je patauge complétement.
D'avance merci de votre aide.
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
17 déc. 2010 à 15:30
Salut,

$ cat plop 
Automatique     OK      cr50-740392.20100719:012504-0   97      S       741
Automatique     OK      cr50-740392.20100719:012504-2   98      S       741
Automatique     OK      cr50-740392.20100719:012506-0   91      S       744
Automatique     OK      cr50-740392.20100719:012504-0   97      S       741
Automatique     OK      cr50-740392.20100719:012504-2   98      S       742
Automatique     OK      cr50-740392.20100719:012506-0   91      S       741

$ awk -F'\t' 'BEGIN { OFS="\t" } {if ($6 ~ /741/) { print $1,$2,$4,$5,$6 } else { print $0 }}' plop 
Automatique     OK      97      S       741
Automatique     OK      98      S       741
Automatique     OK      cr50-740392.20100719:012506-0   91      S       744
Automatique     OK      97      S       741
Automatique     OK      cr50-740392.20100719:012504-2   98      S       742
Automatique     OK      91      S       741

$

;-))
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 17/12/2010 à 15:48
Sinon pour le fun, avec "sed" ça donne ça (à condition que les chaines soient toujours construites de la même façon) :

sed '/741$/ s/\t[-a-z0-9:.][-a-z0-9:.]*//'

;-))
0