GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver le numéro de ligne qui contient le modèle à l'aide du délimiteur Regex personnalisé ?

Comme dans l'exemple, j'essaie d'obtenir des numéros de ligne contenant le motif. Mon modèle contient des barres obliques, je voulais donc ajouter un délimiteur personnalisé.

Celui-ci fonctionne simplement :

sed -n '/file/=' temp.txt

L'utilisation du délimiteur pour le remplacement de chaîne fonctionne également :

sed 's|file|gile|' temp.txt

mais quand je veux ajouter un délimiteur au premier exemple, ce n'est pas le cas :

sed -n '|file /etc|=' temp.txt

Je sais que je peux échapper aux barres obliques mais je préférerais ajouter un délimiteur personnalisé. Une idée de comment corriger ma commande ?

Réponse acceptée :

Stéphane vous a donné le sed solution :

sed -n  '|file /etc|=' file 

Si vous êtes prêt à utiliser d'autres outils, vous pouvez également le faire

grep -n 'file /etc' file

Cela imprimera également la ligne elle-même, pour obtenir le numéro de ligne seul, essayez :

grep -n 'file /etc' file | cut -d: -f 1

Ou, vous pouvez utiliser perl :

perl -lne 'm|file /etc| && print $.' file 

Ou awk :

awk '$0 ~ "file /etc" {print NR}'

Linux
  1. Manipulation de texte en ligne de commande avec sed

  2. Imprimer la ligne précédente après une correspondance de modèle à l'aide de Sed ?

  3. Trouver non récursif lorsqu'on lui donne un modèle sur la ligne de commande ?

  4. sed - comment faire des groupes regex en utilisant sed

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

Apprendre à utiliser l'éditeur de texte Sed

Comment trouver le numéro de port d'un service sous Linux

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx

Comment puis-je compter le nombre de dossiers dans un lecteur sous Linux ?

Comment savoir quelle interface j'utilise pour me connecter à internet ?

Comment puis-je trouver le numéro de ligne dans Bash lorsqu'une erreur s'est produite ?