myVar
bashには、次の長い文字列を含む変数があります。
-rw-rw-rw- root/root 16 2018-02-12 10:03 foo_tar/baz1234_
myVar
最後のスラッシュ以前のすべてを削除したい(最後のスラッシュを含む)、myVar
最終的には保存されますbaz1234_
。すべてを削除して結果を変数に保存するにはどうすればよいですか?
私はsedを扱う解決策を見つけましたが、その解決策はファイル処理を扱っているので、それは私の問題です。
ベストアンサー1
使用する必要がありますbash
パラメータ拡張これには、型の部分文字列の削除を使用します。${PARAMETER##PATTERN}
最初から -
${PARAMETER##PATTERN}
この形式は、一致しようとしている文字列の先頭に記載されているパターンを削除します。彼らは
##
最長のテキストマッチングを使用してこれを実行しようとします。
あなたの例
$ myVar='-rw-rw-rw- root/root 16 2018-02-12 10:03 foo_tar/baz1234_'
$ echo "${myVar##*/}"
baz1234_
コメントで指摘したように、問題の文字列はls
変数内のコマンドの出力であるようです!これはスクリプトを書くのに理想的な方法ではありません。要件をより明確に説明します。