GNU/Linux >> Tutoriales Linux >  >> Linux

¿Encuentra el número de línea que contiene el patrón usando el delimitador Regex personalizado?

Como en el ejemplo, estoy tratando de obtener números de línea que contienen el patrón. Mi patrón contiene barras, por lo que quería agregar un delimitador personalizado.

Este simple funciona:

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

El uso del delimitador para el reemplazo de cadenas también funciona:

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

pero cuando quiero agregar un delimitador al primer ejemplo, no:

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

Sé que puedo escapar de las barras, pero preferiría agregar un delimitador personalizado. ¿Alguna idea de cómo arreglar mi comando?

Respuesta aceptada:

Stéphane te dio el sed solución:

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

Si está abierto a usar otras herramientas, también puede hacerlo

grep -n 'file /etc' file

Eso también imprimirá la línea en sí, para obtener solo el número de línea intente:

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

O bien, puede usar perl :

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

O awk :

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

Linux
  1. Uso de Sed para buscar y reemplazar una línea entre rangos de patrones

  2. ¿Imprimir línea anterior después de una coincidencia de patrón usando Sed?

  3. ¿Encontrar no recursivo cuando se le da un patrón en la línea de comando?

  4. sed - cómo hacer grupos de expresiones regulares usando sed

  5. Usando sed para dividir una cadena con un delimitador

Aprende a usar el editor de texto Sed

Cómo encontrar el número de puerto de un servicio en Linux

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Encuentra la versión de WordPress desde la línea de comandos

El concepto de 'Espacio de espera' y 'Espacio de patrón' en sed

¿Cómo saber qué interfaz estoy usando para conectarme a Internet?