Regex 正则表达式搜索两个斜杠之间的字符串

Regex 正则表达式搜索两个斜杠之间的字符串,regex,bash,shell,Regex,Bash,Shell,我对bashshell脚本有一个问题。我正在寻找两个斜杠之间的字符串。斜杠在这里是分隔符 假设字符串是/one/two/,我希望能够拾取一个 如何在shell脚本中实现这一点?非常感谢任何指针。使用awk的-F标志将delimeter设置为/。然后,您可以打印行中的第一个($2)和第二个($3)字段 path="/one/two/" path=${path#/} # Remove leading / path=${path%%/*} # Remove everything after f

我对bashshell脚本有一个问题。我正在寻找两个斜杠之间的字符串。斜杠在这里是分隔符

假设字符串是/one/two/,我希望能够拾取一个


如何在shell脚本中实现这一点?非常感谢任何指针。

使用
awk
的-F标志将delimeter设置为
/
。然后,您可以打印行中的第一个(
$2
)和第二个(
$3
)字段

path="/one/two/"  
path=${path#/}   # Remove leading /
path=${path%%/*} # Remove everything after first / 
echo "$path"     # Is now "one"
$ cat /my/file
/one/two/

$ awk -F/ '{print $2}' /my/file
one

$ awk -F/ '{print $3}' /my/file
two
如果字符串位于变量中,则可以通过管道将其传递给awk

#!/bin/bash
var=/one/two/
echo $var | awk -F/ '{print $2}'
echo $var | awk -F/ '{print $3}'
使用正则表达式:

$ str="/one/two/"
$ re="/([^/]*)/[^/]*/"
$ [[ $str =~ $re ]] && echo "${BASH_REMATCH[1]}"
one
$ 

使用
cut

$ str="/one/two/"
$ echo "$str" | cut -d/ -f2
one
$ 

将字符串转换为数组,以
/
分隔,并读取必要的元素:

$ str="/one/two/"
$ IFS='/' a=( $str ) echo "${a[1]}"
one
$ 
还有一些

> cut -f 2 -d "/" <<< "/one/two"
one
> awk -F "/" '{print $2}' <<< "/one/two"
one
> oldifs="$IFS"; IFS="/"; var="/one/two/"; set -- $var; echo "$2"; IFS="$oldifs"
one

>cut-f2-d“/“谢谢你的回答这里可能至少有20个好的选项,你试过什么?+1表示