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

関連情報