我想得到两个特殊字符之间的字符串。例如,
/home/oracle/ggs/text.ext
我想甲骨文/ggs在上面的字符串中。
我怎样才能使用 bash 做到这一点?
答案1
$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs
返回/home/
最后一个之后和之前的部分/
。
满足您要求的其他可能方法:
$ echo /home/oracle/ggs/text.ext | cut -d/ -f3,4
oracle/ggs
$ echo /home/oracle/ggs/text.ext | cut -c 7-16
oracle/ggs
$ echo oracle/ggs
oracle/ggs
答案2
对于这个特定的示例,您可以使用awk
:
echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'
Perl 中也是如此:
echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'
答案3
重击
IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' &&
(IFS=/; printf '%s\n' "${a[*]:2:2}")
oracle/ggs