26

このシェル文字列の最後のフィールドを切り取る方法

LINE="/string/to/cut.txt"

文字列が次のようになるように

LINE="/string/to/"

前もって感謝します!

4

5 に答える 5

69

価値のあるものとして、cutベースのソリューション:

NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
于 2011-04-03T21:48:50.353 に答える
23

「dirname」コマンドを使用できると思います。ファイルパスの入力を受け取り、ファイル名の部分を削除してパスを返します。例えば:

$ dirname "/string/to/cut.txt"
/string/to
于 2010-12-30T13:47:47.833 に答える
19

これは、Dash、BusyBox ashなどの最新のBourneバージョン、およびBash、Kornシェル、Zシェルなどの子孫で機能します。

LINE="/string/to/cut.txt"
LINE=${LINE%/*}

または最後のスラッシュを保持するには:

LINE=${LINE%/*}/
于 2010-12-30T15:30:29.460 に答える
1
echo "/string/to/cut.txt" | awk -F'/' '{for (i=1; i<NF; i++) printf("%s/", $i)}'
于 2010-12-30T13:52:55.437 に答える
1

echo $LINE | grep -o '.*/'も動作します。

于 2011-02-12T21:47:28.140 に答える