GNU/Linux >> Linux Esercitazione >  >> Linux

Trova il numero di riga che contiene il modello utilizzando il delimitatore Regex personalizzato?

Come nell'esempio, sto cercando di ottenere i numeri di riga che contengono il modello. Il mio modello contiene barre, quindi volevo aggiungere un delimitatore personalizzato.

Questo semplice funziona:

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

Anche l'uso del delimitatore per la sostituzione delle stringhe funziona:

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

ma quando voglio aggiungere il delimitatore al primo esempio non lo fa:

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

So di poter sfuggire alle barre, ma preferirei aggiungere un delimitatore personalizzato. Qualche idea su come correggere il mio comando?

Risposta accettata:

Stéphane ti ha dato il sed soluzione:

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

Se sei disposto a utilizzare altri strumenti, puoi farlo anche

grep -n 'file /etc' file

Ciò stamperà anche la riga stessa, per ottenere il numero di riga da solo prova:

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

Oppure puoi usare perl :

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

Oppure awk :

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

Linux
  1. Manipolazione del testo da riga di comando con sed

  2. Utilizzo di Sed per cercare e sostituire una linea tra intervalli di pattern

  3. Corrispondenza di pattern multilinea utilizzando Sed, Awk o Grep?

  4. Trova solo la prima occasione usando solo Grep?

  5. Trova la versione di WordPress dalla riga di comando

Usando la forza sulla riga di comando di Linux

Come trovare il numero di porta di un servizio in Linux

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx

Come posso contare il numero di cartelle in un'unità utilizzando Linux?

Come scoprire quale interfaccia sto usando per connettermi a Internet?

Perché sed non utilizza la modalità regex estesa per impostazione predefinita?