Portál AbcLinuxu, 10. května 2024 10:21


Dotaz: sed - vypsání řádků v opačném pořadí

23.4.2009 17:42 Elijen
sed - vypsání řádků v opačném pořadí
Přečteno: 512×
Odpovědět | Admin

Dobrý den,

prosím o radu jak vypsad pomocí sedu řádky v opačném pořadí.

Tedy vstup:

a

b

c

by měl dát výstup:

c

b

a

Dle mé úvahy by mělo následující fungovat, ale nic to nevypíše :-(

 

cat vstup | sed -n "n;x;h;\${x;p}"

 

Předpokládal bych, že sed bude pracovat následovně:

1) "n" - načte řádku do pattern space (aktuální obsah smaže),

2) "x;h" - aktuální řádek přilepí na začátek hold space,

3) "${x;p}" - pokud narazí na poslední řádek, vytiskne hold space,

ale z nějakého mě neznámého důvodu sed nejspíš pracuje úplně jinak, než předpokládám :-O.

Předem děkuji za každou radu.

 

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

Odpovědi

23.4.2009 17:57 tucnacek-gentoo
Rozbalit Rozbalit vše Re: sed - vypsání řádků v opačném pořadí
Odpovědět | | Sbalit | Link | Blokovat | Admin

Na vypsani radku v opacnem poradi nepotrebujes sed, na to je v linuxu prikaz "tac".

 

23.4.2009 18:09 Elijen
Rozbalit Rozbalit vše Re: sed - vypsání řádků v opačném pořadí

Díky, nicméně bych to stejně rád umět v sedu :-)

Michal Wirth avatar 23.4.2009 18:12 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: sed - vypsání řádků v opačném pořadí
asi to bude domaci ukol ;-)

tohle bude fungovat: sed '1!G; h; $!d; /path/to/file'
Důležité se časem stává absurdním, absurdní se časem mění v důležité.
Michal Wirth avatar 23.4.2009 18:14 Michal Wirth | skóre: 26
Rozbalit Rozbalit vše Re: sed - vypsání řádků v opačném pořadí
hups, pri dopisovani cesty k souboru jsem se preklikl a ujela mi uvozovka :-(,

takze spravne je sed '1!G; h; $!d;' /path/to/file
Důležité se časem stává absurdním, absurdní se časem mění v důležité.
23.4.2009 18:29 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: sed - vypsání řádků v opačném pořadí
Odpovědět | | Sbalit | Link | Blokovat | Admin
RTFM: info sed tac
24.4.2009 09:37 ams
Rozbalit Rozbalit vše Re: sed - vypsání řádků v opačném pořadí
Odpovědět | | Sbalit | Link | Blokovat | Admin

Sice uz v diskusi se objevilo nekolik reseni, napisu tady v cem je chyba vaseho.

 

ad 1) - neni treba nacitat dalsi radek pomoci 'n', to se dela automaticky

ad 2) povel 'h' vam zkopiruje obsah pattern space do hold space (t.j. premaze stavaci obsah holdu), na prilepeni potrebujete 'H'

Takze toto bude fungovat:

sed -n 'x;H;${x;p}' vstup

Jedinou vadou na krase je novy radek na konci vypisu.

 

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.