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?
0
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:
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 parsed
.Pour les opérateurs d'expression régulière comme
\+
jettes un coup d'oeil à cette section dans legawk
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.la source
sed -r s/\[[0-9]\+\]/\[\]/
, afin de garder le [] sans le numéro?-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]\+\]/\[\]/'
oused -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.