将 vim 中的所有行替换为行上最后一个斜杠后面的内容

将 vim 中的所有行替换为行上最后一个斜杠后面的内容

我有如下示例数据:

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

相关内容