
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[@]##*/}"