Sed Command ne fonctionne pas?

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.