web-dev-qa-db-ja.com

bashでスラッシュで文字列を分割する方法

文字列の例:

/ gasg/string

期待される結果:string

削除する文字:記号を含む「/」記号の間のすべての文字

16
user1306777

sedの場合:

$ echo "/gasg/string" | sed -e 's/\/.*\///g'
string

組み込みのbash文字列操作の場合:

$ s="/gag/string"
$ echo "${s##/*/}"
string

文字列はUnixパス名とまったく同じように見えます。そのため、basenameユーティリティを使用することもできます。指定したUnixパス名の最後の部分が返されます。

$ basename "/gag/string"
string
# It works with relative paths and spaces too:
$ basename "gag/fas das/string bla bla"
string bla bla
23
Hristo Iliev

また、awk-区切り文字としてスラッシュを使用し、最後のフィールドを出力します

echo "/gas/string" | awk -F/ '{print $NF}'

またはカット-しかし、それはあなたがストリップするディレクトリの数が同じ場合にのみ機能します

echo "/gasg/string" |cut -d/ -f 3
19
Maria Zverina

bash文字列操作を使用できます

a='/gasg/string'
echo ${a##*/}
4
pizza