Portál AbcLinuxu, 11. května 2025 18:48
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.
Na vypsani radku v opacnem poradi nepotrebujes sed, na to je v linuxu prikaz "tac".
Díky, nicméně bych to stejně rád umět v sedu
sed '1!G; h; $!d; /path/to/file'
sed '1!G; h; $!d;' /path/to/file
info sed tac
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.