
У меня есть такие примеры данных:
aaa/bbb/ccc/ddd/eee/fff
aaa/bbb/ccc/ddd/eee/fff/gg
aaa/bbb/ccc/ddd/eee/fff/gg/hhhhh
Как я могу разобрать только:
fff
gg
hhhhh
с vim или bash?
Спасибо
решение1
Вы можете использовать awk
. Вам нужно последнее поле, но у вас другой разделитель.
-F : --разделитель-полей.
Awk NF выдает общее количество полей в записи. Поэтому, когда я говорю NF, я имею в виду номер последнего поля или его индекс. Таким образом, {print $NF} аналогичен {print $1} или {print $2}.
➜ awk -F'/' '{print $NF}' test.txt
fff
gg
hhhhh
решение2
В Vim вы можете использовать следующую команду, чтобы удалить все перед последней косой чертой ( /
):
:%s/.*\///
Вы можете сделать что-то подобное с помощью sed
:
sed 's/.*\///' file
решение3
Bash, вероятно, не лучший выбор для этого:
mapfile -t < data; printf %s\\n "${MAPFILE[@]##*/}"