如何从字符串中提取子字符串。例如,来自字符串:
'/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/'
答案 0 :(得分: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
表示:根据分隔符/
剥离字符串,然后从第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
答案 1 :(得分:3)
您可以使用参数替换,即POSIX定义:
$ s="/home/auto/gift/surprise"
$ echo ${s%/*/*}
/home/auto