sed

Har du noe lurt å dele med oss? NB. Dette er ikke et support forum.

sed

Innleggav rstormo » ons 07.05.2008 7:15

Har en tekst fil som jeg skulle ha byttet ut mye tekst i.
<name>kamera abcde 99</name>
<name>kamera dfg 99</name>
Hvor jeg ønsker og sitte igjen med
<name>kamera 99</name> Har prøvd med sed men får ikke til wildcards bruk.

Brukerens avatar
medlem i 222 måneder
 

Re: sed

Innleggav unbob » ons 07.05.2008 10:17

Denne vil plukke ut de linjene du har skrevet.
Kode: Merk alt
^<name>kamera [a-z]* 99<\/name>

Er følgende aktuelt...
<name>kamera ab cDe 34 99</name>
så må du utvide med mellomrom, store bokstaver og tall
Kode: Merk alt
^<name>kamera[a-zA-Z 1-9]*99<\/name></name>

Brukerens avatar
medlem i 196 måneder
 

Re: sed

Innleggav TO » ons 07.05.2008 10:48

En alternativ awk løsning for disse to:
> <name>kamera abcde 99</name>
> <name>kamera dfg 99</name>

awk '
/abcde 99/{ gsub(/abcde 99/,"99", $0) ; print $0; next }
/dfg 99/{ gsub(/dfg 99/,"99", $0); print $0; next }
' innfil


$ man awk
/gsub
n
medlem i 212 måneder
 

Re: sed

Innleggav geirendre » ons 07.05.2008 13:24

Mulig jeg misforstår hva du egentlig ønsker å oppnå, men hvis det
er å skrive ut det første og det siste på linjen, altså fjerne det i midten.
Så kan du kansje prøve denne lille awk linjen:
Kode: Merk alt
awk '{ print $1,$NF }' tekstfil.txt

Den vil fjerne alt mellom første og siste mellomrom på alle linjer i filen tekstfil.txt

:-)

Erfaren
Brukerens avatar
medlem i 229 måneder
 

Re: sed

Innleggav rstormo » ons 07.05.2008 16:29

Takk for svarene.
sed -e 's/<name>Kamera [A-Za-z]* 60<\/name>/<name>Kamera 60<\/name>/'
Dette ble løsningen :-)

Brukerens avatar
medlem i 222 måneder
 


Returner til Tips og triks / Favoritter



Hvem er i Forumene

Registrerte brukere: Ingen registrerte brukere