
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