Gå til innhold

Hjelp - regular expression


Anbefalte innlegg

Jeg sliter med å få til et bash-script som skal endre et tall på en linje i en tekstfil. Problemlinja i skriptet ser slik ut:

 

sed 's/en tekst og så et tall [1-32]/en tekst og så et tall "'$1'"/g' tekstfil > tekstfil

 

altså - skriptet skal bytte ut et tall (mellom 1 og 32) med argumentet til skriptet. men istedet for å få >en tekst og så et tall 4<, får jeg >en tekst og så et tall "4"< eller så får jeg bare >en tekst og så et tall $1< :no:

 

og mens jeg først er igang. har noen en fancy måte å sjekke om innargumentet til skriptet er et av disse tallene 1,2,4,8,16,32.

Lenke til kommentar
Videoannonse
Annonse

Fatta ikke helt hva du mente (hadde vært lettere med et skikkelig eksempel)

 

Men du får et tall "4" sier du jo, selvf. får du jo det fordi du har jo skrevet det i regexen din..

 

-> tall "'$1'"/g' <<-- der..

 

skal du ikke ha det så skriver du heller

 

sed 's/en tekst og så et tall [1-32]/en tekst og så et tall \1/g' tekstfil > tekstfil

 

REDIGERT: glemte å endre regexen.

Endret av Velmont
Lenke til kommentar

Hei. Problemet var at jeg fikk anførselstegn rundt tallet, altså "4" istedet for bare 4 :-) men jeg har fått løst problemet. det var ikke verre ennå bruke doble anførselstegn rundt hele regex argumentet til sed istedet for enkle..

 

men jeg har fremdeles ingen fancy løsning på hvordan jeg kan sjekke om innargumentet til skriptet er et av tallene 1,2,4,8,16,32. nå bruker jeg bare den enkle løsningen

 

 if [ $1 = 1 -o $1 = 2 -o $1 = 4 -o $1 = 8 -o $1 = 16 -o $1 = 32 ] 

 

Funker jo fint det, men jeg prøver jo å lære meg dette hekkans regex-greiene da...

Endret av einaren
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...