Substitua todas as linhas no vim pelo que estiver depois da última barra de uma linha

Substitua todas as linhas no vim pelo que estiver depois da última barra de uma linha

Tenho dados de amostra como:

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

Como posso analisar apenas:

fff
gg
hhhhh

com vim ou bash?

Obrigado

Responder1

Você pode usar awk. Você quer o último campo, mas tem um delimitador diferente.

-F: --separador de campo.

Awk NF fornece o número total de campos em um registro. Então, quando digo NF, ele contém o número do último campo ou seu índice. então {print $NF} é semelhante a {print $1} ou {print $2}.

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

Responder2

Com o Vim você pode usar o seguinte para remover tudo antes da última barra ( /):

:%s/.*\///

Você poderia fazer algo semelhante com sed:

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

Responder3

Bash provavelmente não é a primeira escolha para isso:

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

informação relacionada