Reemplace todas las líneas en vim con lo que esté después de la última barra en una línea

Reemplace todas las líneas en vim con lo que esté después de la última barra en una línea

Tengo datos de muestra como:

aaa/bbb/ccc/ddd/eee/fff
aaa/bbb/ccc/ddd/eee/fff/gg
aaa/bbb/ccc/ddd/eee/fff/gg/hhhhh

¿Cómo puedo analizar solo:

fff
gg
hhhhh

con vim o bash?

Gracias

Respuesta1

Puedes usar awk. Quieres el último campo pero tienes un delimitador diferente.

-F: --separador de campo.

Awk NF le brinda el número total de campos en un registro. Entonces, cuando digo NF, contiene el último número de campo o su índice. entonces {print $NF} es similar a { print $1} o {print $2}.

➜  awk -F'/' '{print $NF}' test.txt
fff
gg
hhhhh

Respuesta2

Con Vim puedes usar lo siguiente para eliminar todo antes de la última barra ( /):

:%s/.*\///

Podrías hacer algo similar con sed:

sed 's/.*\///' file

Respuesta3

Bash probablemente no sea la primera opción para esto:

mapfile -t < data; printf %s\\n "${MAPFILE[@]##*/}"

información relacionada