Osaisiko joku kertoa, miksei esimkerkiksi seuraava säännönmukainen lauseke toimi:
"^[[:space:]]{1,}[^[:digit:]]"
Eli haun pitäisi (mielestäni) täsmätä riveihin, joiden alussa on tyhjää vähintään yhden merkin verran (tabulaattori tai välilyönti), jonka jälkeen ei tule numeerista merkkiä (0-9).
Ongelma on siinä, ettei grep tai egrep tulkitse ^-merkkiä siten, että alun tyhjätilan jälkeen numerolla jatkuvat rivit suodatettaisiin pois. Haluamani tuloksen saa kuitenkin aikaan jos lopun "[^[:digit:]]" vaihtaa vaikkapa "[[:alpha:]]" tai "[a-zA-Z]". Eli lausekkeiden merkityshän on silti loogisesti sama "ei täsmää numeroihin" ja "täsmää vain kirjaimiin" (olettaen tietenkin, että jätetään muut merkit kuin numerot ja kirjaimet huomioimatta).
Silti, minua vainoaa tuo ^-merkki! Olenkohan nyt ymmärtänyt sen merkityksen väärin? Osaisiko joku kenties viisaampi sanoa, miksi en saa oikeaa tulosta kun manuaali-sivuja luettuanikin ymmärrykseni mukaan lausekkeen pitäisi toimia.
"^[[:space:]]{1,}[^[:digit:]]"
Eli haun pitäisi (mielestäni) täsmätä riveihin, joiden alussa on tyhjää vähintään yhden merkin verran (tabulaattori tai välilyönti), jonka jälkeen ei tule numeerista merkkiä (0-9).
Ongelma on siinä, ettei grep tai egrep tulkitse ^-merkkiä siten, että alun tyhjätilan jälkeen numerolla jatkuvat rivit suodatettaisiin pois. Haluamani tuloksen saa kuitenkin aikaan jos lopun "[^[:digit:]]" vaihtaa vaikkapa "[[:alpha:]]" tai "[a-zA-Z]". Eli lausekkeiden merkityshän on silti loogisesti sama "ei täsmää numeroihin" ja "täsmää vain kirjaimiin" (olettaen tietenkin, että jätetään muut merkit kuin numerot ja kirjaimet huomioimatta).
Silti, minua vainoaa tuo ^-merkki! Olenkohan nyt ymmärtänyt sen merkityksen väärin? Osaisiko joku kenties viisaampi sanoa, miksi en saa oikeaa tulosta kun manuaali-sivuja luettuanikin ymmärrykseni mukaan lausekkeen pitäisi toimia.
Vastaukset 4
Vanhimmat
Äkkiseltäöän katsottuna toi näyttää siltä, että jos ekan tyhjän merkin jälkeen on seuraavana merkkinä numero, niin sillon se rivi suodatetaan pois. Jos rivin alussa on useampi tyhjä ja sitten numero, niin riviä ei suodateta.
Hamppi kiukuttelee sen verta äkäsesti, etten jaksa just nyt miettiä enempi..
Nyt kun tota kattelen tarkemmin, niin musta sen haluamasi jutun pitäs olla just noin kun olet kirjottanut.. Mikähän ihme tossa on..
Kokeiles ajaa 'grep -E' eli extended regular expressions.
Sen verran tuossa ehdossa taitaa olla vikaa, että se suodattaa:
' 123' rivin pois, mutta ei
' 123' riviä
Joutunet kuitenkin tekemään lauseen muotoon:
"^[[:space:]] [[:alpha:]]"