
次のようなサンプルデータがあります:
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[@]##*/}"