如何使用 Shell 取得兩個特殊字元之間的字串?

如何使用 Shell 取得兩個特殊字元之間的字串?

我想得到兩個特殊字元之間的字串。例如,

/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

相關內容