このシェル文字列の最後のフィールドをカットする方法
LINE="/string/to/cut.txt"
文字列が次のようになるように
LINE="/string/to/"
前もって感謝します!
「dirname」コマンドが使えると思います。入力にファイルパスを取り、ファイル名の部分を削除してパスを返します。例えば:
$ dirname "/string/to/cut.txt"
/string/to
価値のあるものとして、cut
ベースのソリューション:
NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
これは、Dash、BusyBox ashなどの最新のBourneバージョン、およびBash、Korn Shell、Z Shellなどの子孫で機能します。
LINE="/string/to/cut.txt"
LINE=${LINE%/*}
または最後のスラッシュを保持するには:
LINE=${LINE%/*}/
echo "/string/to/cut.txt" | awk -F'/' '{for (i=1; i<NF; i++) printf("%s/", $i)}'
echo $LINE | grep -o '.*/'
も機能します。