Portál AbcLinuxu, 27. dubna 2024 00:27


Dotaz: Výpis části stringu

25.3.2010 12:50 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
Výpis části stringu
Přečteno: 181×
Odpovědět | Admin
Nevěděl by prosím někdo jak z proměnné ve které je uloženo

radek: tohle je na jednom radku
radky: tohle je na
dvou radcich
vicradku: tohle
je na
trech radcich


dostanu jednu proměnnou ve které bude obsah který následuje po "radky:" tzn

tohle je na
dvou radcich


takze vlastne to, co je mezi "radky:" a "vicradku", nemuzu to z toho dostat, když to má víc řádků tak si s tím neporadím, a ty řádky tam musej zůstat...
Díky všem za pomoc
Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.

Řešení dotazu:


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

Odpovědi

25.3.2010 12:58 radek
Rozbalit Rozbalit vše Re: Výpis části stringu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli chces odpovedi, mel bys napsat jeste jazyk ve kterém to chces provést..

Pokud se jedna treba o C tak by ti mohlo pomoct ze retezce se ukoncuji znakem "\0" , danou promenou bych testoval na pritomnost tohoto znaku.
25.3.2010 13:02 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
Rozbalit Rozbalit vše Re: Výpis části stringu
jj, omlouvam se zapomnel sem na to, potreboval bych to v bashi, v nejhorsim v python scriptu
Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.
25.3.2010 13:35 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
Rozbalit Rozbalit vše Re: Výpis části stringu
Odpovědět | | Sbalit | Link | Blokovat | Admin
fakt nwm, přes grep nebo sed asi cesta nevede, nebo to jenom neumím / nejde mi to
Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.
25.3.2010 14:52 l4m4
Rozbalit Rozbalit vše Re: Výpis části stringu
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -n '/^vicradku:/{g;s/^\nradky: *//;p;Q;};/^radky:/,$H'
Akorát jsem nepochopil, co vlastně chceš, takže to v tomto konkrétním případě sice vypíše, co požaduješ, ale obecně nevím, zda to řeší dotaz...
25.3.2010 15:41 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
Rozbalit Rozbalit vše Re: Výpis části stringu
nefunguje mi to =( do toho se posilaji data normalne prez rouru ne? jako echo $neco | sed ....
jinak jde o konfigurak kde jsou data ulozena zpusobem

prom1: neco
prom2: zase neco
prom3: neco na
vice radcich
bohuzel nevim
na kolikati
prom4: neco...


a potrebuju z toho dostat tu prom3:, vsechny ostatni sem vykuchal jednoduse grepem ale jedina prom3 ma vic radku, bohuzel pokazdy jinej pocet...
Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.
25.3.2010 15:53 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Výpis části stringu
Ano, přes rouru - tak to bude v bash vždy (mimochodem, pozor na uvozovky). Takže bych to viděl asi takto:
echo "$neco" | sed -n '/^radky:/,/^\w\+:/p'  | head -n -1
Asi by to šlo i čistě v sedu, ale přijde mi to trochu nepřehledné...

25.3.2010 16:04 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: Výpis části stringu
Anebo reseni pomoci perlu:

perl -e '$a=join("", <STDIN>);print($a) if($a=~s/.*prom3:([^:]+\n)([^:\n]+:.*)?$/\1/s)'

napr.:
$ echo "prom1: neco
prom2: zase neco
prom3: neco na
vice radcich
bohuzel nevim
na kolikati
prom4: neco..." | perl -e '$a=join("", <STDIN>);print($a) if($a=~s/.*prom3:([^:]+\n)([^:\n]+:.*)?$/\1/s)'
 neco na
vice radcich
bohuzel nevim
na kolikati
25.3.2010 15:46 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Výpis části stringu
Trochu přehlednější řešení, zapamatovatelné pro toho kdo není tak zběhlý v sedu (i když má zjevné nedostatky):
sed -n '/^radky:/,/^vicradku:/p'  | head -n -1
25.3.2010 16:04 Mercuriuz | skóre: 16 | blog: Mercuriuz | V hospodě =)
Rozbalit Rozbalit vše Re: Výpis části stringu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ha, díky všem, nakonec mi jede obojí =)
Linux users everywhere, raise your keyboards into the air, we´re warriors, warriors of the world.

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.