Sida 1 av 1

Rensa bort överflödiga blanktecken i en sträng

Postat: 03 jan 2008, 08:36
av bjorktorp
Idag är jag lat. Istället för att läsa på själv så prövar jag att kasta ut en fråga här:

I ett bash-skript vill jag kunna rensa bort blanktecken (mellanslag), om det finns fler än ett i rad, så att övriga tecken i raden separeras av endast ett blanktecken (mellanslag)

Därefter ska jag lätt kunna göra cut -d' ' för att hitta den delsträng jag vill fortsätta att jobba med är tanken.

Någon som har en spontan idé hur man tar bort mellanslagen?

/Roger

Postat: 03 jan 2008, 11:18
av elf98
sed -e s/" "//g

Postat: 03 jan 2008, 12:16
av Dowser
Kommer inte detdär att ta bort *alla* mellanslag?
Borde itne sed -e s/" "/" "/g bli bättre?
(Borde köra man sed först, för du *är* bättre på det än mig. :) )

Postat: 03 jan 2008, 14:00
av otto
sed -r -e "s/\s+/ /g"

Postat: 03 jan 2008, 14:48
av The_donk
fattar ni hur nördiga de raderna ser ut. :)
jag fattar inte ett smack, och sedan kommer jag ihåg att man var guru om man kunde mer än 5 kommando i dos. Det var tider det...

Ärligt talat, kan ni inte föklara strängarna? Vem vet, temperatur.nu kommer kanske att sluta som ett riktigt linux FAQ

Postat: 03 jan 2008, 16:24
av bjorktorp
Otto: Du är en hejare! Precis vad jag var ute efter. Ja, jag har testkört.

Nu ska jag läsa på lite om sed också för framtida bruk. Så måste jag ju också kolla vad ditt tecken-hokus-pokus egentligen står för. Som The Donk antyder så blir ofta sed strängar lite trolleriaktiga.

Tackar hjärtligast!

/Roger

Postat: 14 jan 2008, 18:38
av ansim
varför använda cut -d?
Du blir väldigt positionsberoende.
Testa med awk '{ print $2 }'. Detta skriver ut 2a fältet i en sträng

kör hela sed och skicka direkt till awk:
# sed -r -e "s/\s+/ /g" | awk '{ print $3 }'

Detta skriver ut 3e fältet i strängen.
Vill du byta fältseparator(tecken mellan fälten) till "_" t.ex, använd awk -F_

//Anders

cut - awk

Postat: 14 jan 2008, 23:43
av bjorktorp
Ja, varför använda cut?
Jo därför att jag är en rookie på detta och cut var det första jag hittade som gjorde jobbet, men jag tar varje tillfälle jag får för att lära mig nå't nytt.

Tack för awk-förslaget!

/Roger