Portál AbcLinuxu, 11. května 2025 06:45

Dotaz: posixovy regularni vyraz

9.3.2010 10:14 jirka36 | skóre: 2
posixovy regularni vyraz
Přečteno: 239×
Odpovědět | Admin

Zdravim chtel jsem se zeptat jak by se dalo udelat nasledujici:

Petr Novak

jak z tohoto radku vyseknout prijmeni kdyz vim ze mezi krestnim jmenem a prijmenim je mezera? ja sem zkousel neco takoveho, ale nefunguje to

sed 's/^[[a-zA-Z]*[:space:]*\([:alnum:]+\)]+$/\1/g'

 

Dekuji

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.3.2010 10:41 Ondřej Kopka | skóre: 20 | blog: ondrejk
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus tohle: echo 'Petr Novak' | awk '{print $2;}'
9.3.2010 10:56 jirka36 | skóre: 2
Rozbalit Rozbalit vše Re: posixovy regularni vyraz

jj to by mohlo byt ale co kdyz by bylo zadany jen to prijmeni? jako ze seznam je

Petr Novak

Novak

Roman Sova

 

takze to jmeno neni povinny...nekdy tam bejt muze a nekdy ne....

9.3.2010 11:05 l4m4
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
awk '{print $NF}'
9.3.2010 11:20 jirka36 | skóre: 2
Rozbalit Rozbalit vše Re: posixovy regularni vyraz

jj toto by slo, jen mam dotaz jak by se to potom udelalo kdyby za tim prijmenim jeste neco nasledovalo...napr

Petr Novak Praha Hradcany 22

 

tak aby to vypsalo vse od prijmeni do konce radku, tedy:

Novak Praha Hradcany 22

Tarmaq avatar 9.3.2010 12:40 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
a jak mame poznat co je prijmeni? nejaka kristalova koule? ;]
Don't panic!
Tarmaq avatar 9.3.2010 13:12 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
idealni by bylo, kdyby ty zdrojovy data byly napr. ve formatu csv (hodnoty oddelene strednikem). Priklad:
$ cat foo
Josef;Novak;Praha;Jecna 30;
Vaclav;Kopecky;Praha;;
;Novak;;;
$ cat foo | cut -d ";" -f 2
Novak
Kopecky
Novak
Pokud nemuzes rict, kolik slov ma presne obsahovat jmeno, prijmeni, adresa atp., tezko budes zjistovat, ktere z nich je prijmeni..

Don't panic!
9.3.2010 14:56 l4m4
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
Příjmení je v tomto příkladu Praha, nebo Hradčany?
9.3.2010 11:03 l4m4
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předně je skoro celý výraz zapsaný v hranaté závorce (tj. kategorie znaků), takže je to akorát sekvence znaků z nějaké kategorie, v tomto případě velmi obskurní. Nevím, co tam to obalení závorkami (ať už jakýmikoli) má dělat.

Když ti toto odmyslím, není ten regulární výraz klasický ani POSIXový, protože míchá neobackslahsované + a obacklashované závorky, takže nemůže fungovat. Buď použij \+ a \(...\) nebo sed -r a pak jen + a (...).

Kromě toho [:space:]* by asi mělo být [[:space:]]+.

Pak už se to natolik liší od toho, cos sem napsal, že těžko říci...
9.3.2010 11:16 jirka36 | skóre: 2
Rozbalit Rozbalit vše Re: posixovy regularni vyraz

no ale kdyz tam bude [[:space:]]+ tak to bude znamenat ze tam bude alespon jedna mezera....a tam ta mezera byt nemusi kdyz je zadano jen prijmeni.... Muzou nastat dve situace, bud je zadano krestni jmeno nebo neni

Petr Novak

nebo

Novak

takze ten vyraz muze zacit pismeny, ktere mohou byt nasledovany libovolnym poctem mezer (toto by melo pokryt pripadne zadani krestniho jmena a mezer mezi prijmenim) a za mezerami nasleduje posloupnost nebilych znaku(prijmeni), ktere si musi vyraz zapamatovat a pak je vypsat...

9.3.2010 11:34 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
  sed -re 's/(.*[[:space:]])?([^[:space:]]+)$/\2/'
  sed -e 's/\(.*[[:space:]]\)\?\([^[:space:]]\+\)$/\2/'
  while read x; do echo "${x##* }"; done
19.3.2010 12:53 jirka36 | skóre: 2
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
a jak bz se daly pomoci grepu vyhodit radky, ktere konci timto = -1 ENOENT (No such file or directory)

zkousel sem neco takovehoto, ale nefunguje to... grep -E "= -1[[:space:]][[:alpha:]]*\)$" -v
19.3.2010 12:55 jirka36 | skóre: 2
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
pevny tvar je = -1 A-Z (a-zA-Z)
19.3.2010 13:05 SuLo
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
A co takto

grep -v "= -1 ENOENT (No such file or directory)$"
Tarmaq avatar 19.3.2010 13:11 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: posixovy regularni vyraz
grep -vE '= -1 \w* (.*)$'
Don't panic!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.