Regex 正则表达式搜索两个斜杠之间的字符串
我对bashshell脚本有一个问题。我正在寻找两个斜杠之间的字符串。斜杠在这里是分隔符 假设字符串是/one/two/,我希望能够拾取一个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
如何在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表示