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

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Sep 2003

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

| Opteron 165 @ 2810MHz | DFI Lanparty UT NF4 Ultra-D | 2x1024MB TwinMOS PC3200 DDR |
| Sapphire Radeon X800GTO² @ 16p, 533/627 | 3DMark05: XXXXp | 3DMark01: XXXXXp |
| 150GB Raptor + 120GB + 2x200GB + 2x250GB + 2x320GB + 500GB | Totalt: 2,31TB |

Trädvy Permalänk
Medlem
Plats
::1
Registrerad
Jun 2005

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).

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004

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