Wie erhält man mit Shell eine Zeichenfolge zwischen zwei Sonderzeichen?

Wie erhält man mit Shell eine Zeichenfolge zwischen zwei Sonderzeichen?

Ich möchte eine Zeichenfolge zwischen zwei Sonderzeichen erhalten. Zum Beispiel:

/home/oracle/ggs/text.ext

Ich willoracle/ggsin der obigen Zeichenfolge.

Wie kann ich dies mit Bash machen?

Antwort1

$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs

Das gibt den Teil nach /home/und vor dem letzten zurück /.

Weitere mögliche Ansätze, die Ihren Anforderungen gerecht werden:

$ 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

Antwort2

Für dieses spezielle Beispiel können Sie Folgendes verwenden awk:

echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'

Dasselbe in Perl:

echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'

Antwort3

Schlag

IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' && 
(IFS=/; printf '%s\n' "${a[*]:2:2}") 
oracle/ggs

verwandte Informationen