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 1
Vanhimmat
grep -v $[:alpha:]