GNU/Linux >> Tutoriels Linux >  >> Linux

Ajouter un mot à la fin de la ligne avec Sed ?

Cette question a déjà des réponses ici :Comment ajouter du texte en fin de ligne lorsque le motif correspond ?

(5 réponses)
Fermé il y a 4 ans.

J'ai un bloc de code comme suit dans un fichier :

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2

Je veux rechercher toutes les lignes qui avaient tc_ mot-clé et ajoutez status=D au bout de ces lignes. Ainsi, les entrées ci-dessus deviendront comme ceci

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1 status=D
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2 status=D

J'utilise la commande suivante pour y parvenir :

sed -i '/tc_/a status=D' app.conf

Mais je peux voir status=D est après une nouvelle ligne. Je ne veux pas de nouvelle ligne pour cela. Il doit être ajouté avec un ' ‘ (espace) .

Réponse acceptée :

essayez

sed  -e '/tc_/s/$/ status=D/'

  • /tc_/ sur la ligne où se trouve tc_,
  • s remplacer,
  • /$ fin de ligne,
  • / status=D/ par cette chaîne

si tout semble correct, ajoutez -i à modifier sur place.


Linux
  1. Remplacez les guillemets intelligents par la commande Linux sed

  2. Apprendre à utiliser l'éditeur de texte Sed

  3. Manipulation de texte en ligne de commande avec sed

  4. Le concept de 'Hold space' et 'Pattern space' dans sed

  5. sed insérer une ligne avec des espaces sur une ligne spécifique

Comment vérifier l'orthographe sur la ligne de commande Linux avec Aspell

Manipuler du texte en ligne de commande avec grep

Suivi du temps avec Timewarrior en ligne de commande

Multi-tâches en ligne de commande avec screenie

Aller au début ou à la fin du fichier dans Vim [Quick Tip]

Utilisation de la commande Linux sed avec des exemples