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

相關內容