GNU/Linux >> Tutoriales Linux >  >> Linux

¿Sed eliminar todo hasta e incluir el primer período si hay más de un período en esa línea y hacer esto para todo el archivo?

sed eliminando todo hasta e incluyendo el primer punto si hay más de un punto en esa línea y haz esto para todo el archivo.

Antes de sed:

akamai.com
cdnjs.cloudflare.com
com.cdn.cloudflare.net

Después de sed:

akamai.com
cloudflare.com
cdn.cloudflare.net

Respuesta aceptada:

$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net

El sed script primero hace coincidir las líneas que contienen al menos dos puntos usando la expresión regular \..*\. (también se podría haber escrito [.].*[.] ). Para las líneas que coincidan con esto, se realiza una sustitución que elimina todo hasta el primer punto inclusive.

Usando awk , siendo algo extenso en comparación con lo anterior:

$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Aquí, cada vez que hay más de dos campos delimitados por puntos, dividimos la línea actual en puntos y luego volvemos a crear el registro actual a partir de eso, omitiendo el primer campo. El 1 final al final hace que se impriman todas las líneas (modificadas o no).

awk más corto de la misma manera que el sed solución:

$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Linux
  1. ¿Cómo insertar texto antes de la primera línea de un archivo?

  2. ¿Reemplazar una línea con otro contenido usando Sed y paralelo para un archivo grande?

  3. ¿Codificar el contenido del archivo y repetirlo como una sola línea?

  4. Elimine los primeros cinco caracteres en cualquier línea de un archivo de texto en Linux con sed

  5. Eliminar y agregar permisos usando notación numérica en la misma línea

¿Cuál es ese total en la primera línea después de ls -l?

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

imprimir el contenido de más de un archivo en un archivo zip

script bash agrega texto a la primera línea de un archivo

Cómo tocar un archivo y mkdir si es necesario en una línea

xargs sustitución de más de un argumento