文字列の短縮

文字列の短縮

.txtファイルを読み取り、結果をどこかに保存するスクリプトを作成しています。

表現を減らす必要があります。

str1/str2/str3/str4/str5

私はただ必要です。str5上の内容です。

ループから1行ずつファイルを読み込んでいますwhile

そのような文字列を減らすには?

ベストアンサー1

このbasenameユーティリティは、パス名のファイル名部分を返します。文字列をパス名として処理すると、次のものが返されますstr5

string=str1/str2/str3/str4/str5
basename -- "$string"

上記の出力はstr5。これは$string、改行文字が含まれている場合、または次から始まる場合にも機能します-

string='-str1/str2/str3/str
4/str5'
basename -- "$string"

結果をbasename変数に保存することは、一般的なコマンド置換によって行われます。

newstring=$( basename -- "$string" )

しかし、コマンドの置き換え巻きみんな末尾の改行文字:行区切り文字として出力される文字ですが、末尾にbasenameある改行文字も含まれます$string

これはPOSIXシェルの演算子を使用して回避することができます${var##pattern}(また、プロセスをフォークし、別のコマンドを実行することを節約できます)。

string='very/
strange
file name

'
newstring=${string##*/}

ただし、s のよう$stringな他の値を提供します。//some/dir/

おすすめ記事