2 votes

Grep peut-il supprimer un contexte, mais pas une ligne complète ?

Je supprime les clés d'un fichier de configuration à l'aide de la commande suivante :

cat showrunningconfig.txt | grep -v '[ \t\r\n\v\f]*[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]'

Cela supprime la ligne entière. Mais je veux supprimer uniquement les motifs pertinents. grep possède l'option -o, qui ne montre que le motif pertinent et non la ligne entière. Mais l'option -o ne fonctionne pas en combinaison avec -v

Une idée ? Merci beaucoup !

1voto

Wiktor Stribiżew Points 100073

Vous devez utiliser sed lorsque vous avez un motif partiel à supprimer d'une chaîne.

sed -i 's/[[:space:]]*[[:xdigit:]]\{8\}//g' showrunningconfig.txt

Voir le Démonstration en ligne

s="Text A1f4E3D4 and more text"
sed 's/[[:space:]]*[[:xdigit:]]\{8\}//g' <<< "$s"
# => Text and more text

Détails

  • -i - remplacement par un autre (GNU sed option)
  • s/[[:space:]]*[[:xdigit:]]\{8\}//g :
    • s - commande de substitution
    • [[:space:]]* - 0+ espaces blancs
    • [[:xdigit:]]\{8\} - huit A-F , a-f y 0-9 chars.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X