J’ai un tableau comme celui-ci dans un fichier Unix. Txt simple Je veux remplacer les numéros des colonnes d’identification par des valeurs telles que 9 = chat, 22 = chien. Quand j’utilise la commande
sed ‘s / 9 / cat /’
Il remplace tous les instants de 9 avec le chat. Je ne peux pas simplement le faire pour cette ligne seulement parce que parfois l’id correspondrait aux nombres dans les valeurs. Merci d’avance.
Original Table MAX(VALUE) Id 37787 9 151326 22 108339 24 10069 303
Table des résultats attendus
MAX(VALUE) Id 37787 9 151326 22 108339 24 10069 303
Ce que je reçois
MAX(VALUE) Id 37787 9 151326 22 10833Cat 24 1006Cat 303
2ème question
sed 's/22/cat/' Report >> Report sed 's/24/dog/' Report >> Report sed 's/801/lion/' Report >> Report sed 's/821/lion/' Report >> Report
Lorsque j’utilise cette commande, il semble imprimer 4 tableaux des mêmes résultats. J’ai essayé d’utiliser> mais aucune table ne s’affiche. any1 sait pourquoi? Merci encore .
Pour remplacer un nombre à la fin d’une ligne, incluez l’ancre de fin de ligne:
sed 's/9$/Cat/'
Pour éviter de remplacer 9 par Cat dans 19 qui devrait aller à Fish, passer des numéros d’identification les plus longs aux plus courts.
Aussi, au lieu d’invoquer plusieurs fois sed
, invoquez-le une fois avec plusieurs commandes (certaines syntaxes ne sont pas supscopes universellement dans toutes les versions de sed):
sed 's/22$/Dog/;s/9$/Cat/'
ou
sed -e 's/22$/Dog/' -e 's/9$/Cat/'
Pour changer un fichier en place, utilisez -i
:
sed -i~ 's/...//' Report
(si votre version de sed le supporte). L’écriture dans un fichier que vous lisez en même temps ne fonctionne pas.