Plocka ut en del av en sträng med bash-script?

Permalänk
Medlem

Plocka ut en del av en sträng med bash-script?

Om jag har en sträng som ser ut något i stil med följande:
Abc.def-aaa.bbb
Abc.232_a.3d.2c
Hej.På.Dig-123.hej

Så vill jag plocka ut all text fram till sista punkten oberoende på vad det är för tecken innan. Dvs, jag vill få ut följande:
Abc.def-aaa
Abc.232_a.3d
Hej.På.Dig-123

Permalänk
Medlem

Ett sätt att lösa det:

echo "text.att.behandla.här" | sed -e 's/\(.*\)\(\.[^\.]*\)/\1/'

Men som vanlig i *nix finns det mer än ett sätt att flå en katt... Du kan använda sed, awk eller perl för regexes. Du kan antagligen använda bashs egen pattern matching (om jag minns rätt, se '%%', '##' och vänner).

Permalänk
Medlem

echo "Abc.232_a.3d.2c" | rev | cut -d "." -f2-1000 | rev