¿Cómo eliminar el último personaje solo si está allí?
entrada:
OpenOffice.org/m openOffice.org/ozm Pers. Pfg. Phil. Profe. resp. Roonstr./m roonstr./ozm
salida deseada:
OpenOffice.org openOffice.org Pers Pfg phil Profe resp Roonstr Roonstr
Llegué tan lejos que solo queda el punto, pero desafortunadamente el último comando sed también elimina la letra g
:
$ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'
text-processing
grep
sed
eliminar los últimos dotonly si hay
fuente
fuente
sed -n '/\./{s=/[^/]*$==;s/\.$//;p}
. De todos modosgrep
+sed
funcionará mucho más que solo unosed
.sed 's/[./]\+[^./]*$//'
Eliminar un carácter solo si está allí es exactamente la descripción de las expansiones de parámetros.
El punto no es especial en este caso (un punto es especial en una expresión regular).
El otro patrón podría eliminarse con
%/*
:Para eliminar ambos:
Por supuesto, para trabajar con un archivo fuente es más rápido usar sed en el archivo.
Solo recuerde citar el punto (para que coincida literalmente, de lo contrario significa: cualquier carácter).
fuente
Solo cambia ligeramente tu expresión regular: para escapar del
.
Y no necesitasgrep
fuente