GNU/Linux >> Tutoriales Linux >  >> Linux

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

Esto es lo que quieren decir Birei y Thor:

sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"

Salida:

test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar

Tienes que escapar de los paréntesis para agrupar expresiones:

\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)

Y úsalos con \1 , \2 , etc.

EDITAR :También tenga en cuenta justo antes de SNAPSHOT que [.] no coincidirá. Corchetes interiores . es literal. Debería ser [0-9.-]*


de hecho, para esas cadenas regulares, awk podría salvarlo de la agrupación. :)

simplemente da el número de índice de la pieza que desea:

awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}' 

salida:

kent$  echo "test-artifact-201251-balbal-0.1-SNAPSHOT.jar"|awk 'BEGIN{FS="-";OFS="-"}{print $1,$2,$5,$6}'
test-artifact-0.1-SNAPSHOT.jar

Linux
  1. ¿Cómo cambiar el nombre de muchos archivos usando una expresión regular?

  2. ¿Cómo enviar Ssh a un servidor usando otro servidor?

  3. ¿Cómo agregar/listar/eliminar un grupo?

  4. Cómo rastrear scripts de Python usando trace.py

  5. Cómo buscar archivos usando expresiones regulares en el script de shell de Linux

Cómo enumerar grupos en Linux

Cómo quitar líneas de un archivo usando el comando Sed

CÓMO UTILIZAR EL EDITOR SED

Cómo:una introducción al uso de Git

Cómo conectarse a MySQL usando PHP

Tutorial de Unix Sed:Cómo escribir en un archivo usando Sed