sed: remplace un certain motif par une chaîne arbitraire entre


0

J'essaie de nettoyer un fichier journal pour une meilleure lisibilité - il y a une charge de choses non nécessaires à mes besoins - je dois fondamentalement remplacer sshd [xxxx] où xxxx est un nombre arbitraire avec, eh bien, un espace ou rien. Bien que je puisse remplacer une chaîne connue, je ne sais pas comment faire un wildcard sed dans ce cas. Alors, comment puis-je le faire?

Réponses:


1

sa pas clair si vous voulez le remplacer le "sshd" aussi bien, donc je suppose que c'est.

   sed 's/sshd\[[0-9]*\]//g' file

autrement,

   sed 's/sshd\[[0-9]*\]/sshd[]/g' file

le premier était ce que je cherchais, merci :)
Journeyman Geek

1

Vous cherchez à remplacer tout chiffres après sshd à l'intérieur [] avec rien. Pour sélectionner des nombres, vous pouvez utiliser une plage [0-9]\+, où [0-9] correspond à n'importe quel chiffre et \+ veux dire un ou plusieurs de cela avant .

Donc, dans votre cas, l'expression rationnelle utilisée pour remplacer les nombres par des zéros serait:

sed -r s/\[[0-9]\+\]/\[\]/

où le -r active les expressions rationnelles étendues comme celle ci-dessus. le \[ et \] sont juste pour échapper à la [ et ] afin qu'ils ne soient pas interprétés par sed.

Pour les opérateurs d'expression régulière comme \+ jettes un coup d'oeil à cette section dans le gawk manuel, pour la liste de caractères comme [0-9] voir cette section - la plupart de ce que vous voyez là s'applique à sed ainsi que.


ça ne devrait pas être sed -r s/\[[0-9]\+\]/\[\]/, afin de garder le [] sans le numéro?
Snark

@snark tu as raison
Benjamin Bannier

1
Vous pouvez omettre le -r si vous citez la commande. Si vous faites les deux (utilisez -r et citez la commande), vous pouvez omettre l’échappement du +. sed 's/\[[0-9]\+\]/\[\]/' ou sed -r 's/\[[0-9]+\]/\[\]/' Souvent, quand il y a des parenthèses de groupe, en utilisant -r avec guillemets peut économiser plusieurs caractères et améliorer la lisibilité puisque les parenthèses n'ont pas besoin d'être échappées.
Dennis Williamson

@ Dennis intéressant
Benjamin Bannier
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.