2

文字列から部分文字列を取得するにはどうすればよいですか。たとえば、次の文字列から:

'/home/auto/gift/surprise'

取るだけ:

'/home/auto/'

異なる場合があることに注意してください'/home/auto/gift/surprise'。つまり、ディレクトリ レベルは 4 つではなく、6 つまたは 8 つになる可能性がありますが、最初の 2 つのフォルダだけに関心があります。

成功せずにこれまでに試したことは次のとおりです。

$ pwd
'/home/auto/gift/surprise' 
$ pwd | sed 's,^\(.*/\)\?\([^/]*\),\1,'
'/home/auto/gift/'
4

2 に答える 2

6

これには次のように使用する方が良いと思いますcut

$ echo "/home/auto/gift/surpris" | cut -d/ -f1-3
/home/auto
$ echo "/home/auto/gift/surpris/bla/bla" | cut -d/ -f1-3
/home/auto

つまりcut -d/ -f1-3、 delimiter に基づいて文字列を取り除き/、最初の部分から 3 番目の部分まで出力します。

またはまたawk

$ echo "/home/auto/gift/surpris" | awk -F/ 'OFS="/" {print $1,$2,$3}'
/home/auto
$ echo "/home/auto/gift/surpris/bla/bla" | awk -F/ 'OFS="/" {print $1,$2,$3}'
/home/auto
于 2013-06-13T13:09:50.637 に答える
3

POSIX で定義されているパラメーター置換を使用できます。

$ s="/home/auto/gift/surprise"
$ echo ${s%/*/*}
/home/auto
于 2013-06-13T13:55:14.383 に答える