选择字符串的第一部分

use*_*324 2 unix linux bash awk sed

如何从字符串中提取子字符串.例如,从字符串:

'/home/auto/gift/surprise'
Run Code Online (Sandbox Code Playgroud)

只采取:

'/home/auto/'
Run Code Online (Sandbox Code Playgroud)

请注意,'/home/auto/gift/surprise'可能会有所不同,即,而不是有4个目录级别,它可能会转到6或8,但我只对前2个文件夹感兴趣.

这是我到目前为止尝试过的,没有成功:

$ pwd
'/home/auto/gift/surprise' 
$ pwd | sed 's,^\(.*/\)\?\([^/]*\),\1,'
'/home/auto/gift/'
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 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
Run Code Online (Sandbox Code Playgroud)

请注意,这cut -d/ -f1-3意味着:根据分隔符剥离字符串/,然后从第1部分到第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
Run Code Online (Sandbox Code Playgroud)