Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 awk '$1 ~ /^abcd/{ $2=$2"fr" } { print } ' Fichier.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 awk '$1 ~ /^abcd/{ $2=$2"fr" } { print } ' Fichier.txt
C'est fait
Et avec un peu de chance, il va encore s'apercevoir que des fichiers ont déjà été modifiés à la main et donc il ne faudra rajouter le ".fr" que s'il n'a pas déjà été rajouté...
Cordialement.
Magique
et si on veut par exemple exclure les colonnes qui contiennent déjà ce "fr" à la fin( comme la première ligne par exemple)? comment faire?
j'ai essayé le " !s ", mais j'étais perdu
Bonjour,
Si des lignes ont déjà été modifiées, la commande awk change juste un peu:
Edit: ".fr" à contrôler sur le deuxième champ, merci disedorgue
Code : Sélectionner tout - Visualiser dans une fenêtre à part awk '$1 ~ /^abcd/ && ! $2 ~ /\.fr$/ {$2=$2 ".fr"} {print}' Fichier.txt
Un problème bien posé est déjà résolu (H. Bergson).
Il faut contrôler le .fr sur le deuxième champs pas le premier
Qui si colle pour le sed ???
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ cat brol abcd bbbb-fr @cccc abcd bbbb @cccc abcd eeee @cccc xaee bbbb @cccc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ sed '/^abcd/{/[^\t]*\t[^\t]*fr/b;s/[^\t]*\t[^\t]*/&-fr/}' brol abcd bbbb-fr @cccc abcd bbbb-fr @cccc abcd eeee-fr @cccc xaee bbbb @cccc
$ man woman
Il n'y a pas de page de manuel pour woman.
Il n'y a rien à faire, je trouve que awk est plus lisible mais c'est un bel exercice
Allez, je suis taquin:
et ce n'est pas les "\t" dans le echo...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 echo -e 'abcd\tfrbb\t@cccc' | sed '/^abcd/{/[^\t]*\t[^\t]*fr/b;s/[^\t]*\t[^\t]*/&-fr/}' abcd frbb @cccc
une qui fonctionne (à priori):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ echo -e 'abcd\tfrbb\t@cccc' | sed '/^abcd/{/[^\t]*\t[^\t]*-fr\t/!s/\([^\t]*\t[^\t]*\)\t/\1-fr\t/}' abcd frbb-fr @cccc
Cordialement.
Sinon, juste un chtit sed '/^abcd/{/[^\t]*\t[^\t]*fr\b/b;s/[^\t]*\t[^\t]*/&-fr/}' devrait suffireune qui fonctionne (à priori):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ echo -e 'abcd\tfrbb\t@cccc' | sed '/^abcd/{/[^\t]*\t[^\t]*-fr\t/!s/\([^\t]*\t[^\t]*\)\t/\1-fr\t/}' abcd frbb-fr @cccc
$ man woman
Il n'y a pas de page de manuel pour woman.
manque juste leBon, allez, maintenant une version pure builtin bash:
Code : Sélectionner tout - Visualiser dans une fenêtre à part /[^\t]*\t[^\t]*-fr\b/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ cat plip abcd bbbb-fr @cccc abcd bbbb @cccc abcd eeee @cccc xaee bbbb @cccc abcd frddfr @cccc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ while read a b c ; do case $a in abcd) case $b in *-fr) echo -e "$a\t$b\t$c" ;; *) echo -e "$a\t$b-fr\t$c" ;; esac ;; *) echo -e "$a\t$b\t$c" ;; esac; done <plip abcd bbbb-fr @cccc abcd bbbb-fr @cccc abcd eeee-fr @cccc xaee bbbb @cccc abcd frddfr-fr @cccc
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager