Portál AbcLinuxu, 12. května 2025 09:05

Dotaz: ako vytiahnut predposledny riadok

6.6.2007 22:37 oxymoron | skóre: 16 | blog: oxymoron | Bratislava
ako vytiahnut predposledny riadok
Přečteno: 145×
Odpovědět | Admin
riesim vec s tym ze potrebujem v skripte zo suboru vycitat predposledny riadok a odstranit zaciatocne "./"
$cat test.index
./test.1
./test.2
./test.3
./test.4
mam riesenie asi taketo
tail -n2 test.index | sed 's/.\///' | sed '$d'

len sa mi to zda nejake zlozite, nie je jednoduchsi sposob ako na to ?
urcite je ale aky? :)
dakujem
Born to be root ... :-D | "..žebrák není ten, kto svobodu si získal, z toho se stává král.."
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.6.2007 22:42 vice | skóre: 21
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
Odpovědět | | Sbalit | Link | Blokovat | Admin
tail -n 2 test.index | head -n 1
Není důležité co se stane, ale jak se to vysvětlí.
6.6.2007 22:56 sweto | skóre: 20
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
Odpovědět | | Sbalit | Link | Blokovat | Admin
tail -n 2 test.index | head -n 1 | cut -c3-

ale myslim ze bude existovat aj jednoduchsie riesenie
6.6.2007 23:06 oxymoron | skóre: 16 | blog: oxymoron | Bratislava
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
no jasne kombinacia tail a head ma nenapadla :)

diky
Born to be root ... :-D | "..žebrák není ten, kto svobodu si získal, z toho se stává král.."
6.6.2007 23:11 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jenom sed:
$ cat test.index | sed -n 's|^./||;${g;1!p;};h'
test.3
Ale nechtěj po mně vysvětlení, nebo zjednodušení .. ;-)
7.6.2007 13:52 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
Já si zahraji na vykladače:
  1. s|^./||

    Každému řadku se uřeže vše po poslední lomítko.

  2. ${g;1!p;}

    Pouze s posledním řádkem se provede toto: Z hold space překopírujeme data do pattern space [g] (tj. řádek předcházející tento řádek, tj. řádek předposlední) a pokud se nejedná o 1. řádek (čeho?) [1!], tak jej vytiskneme [p].

  3. h

    Každý řádek překopírujeme z pattern space do hold space.

Jen nechápu, ten první řádek.
7.6.2007 13:54 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
Já si zahraji na vykladače:
s|^./||

Samozřjmě jen tečka a lomítko na začátku (vsugeroval jsem si tam hvězdičku).

7.6.2007 20:06 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: ako vytiahnut predposledny riadok
Ano, dobrý ...

Ono funguje i toto:
sed -n 's|^./||;${g;p};h'
ale toto:
sed -n 's|^./||;${g;1!p;};h'
se zdá být univerzálnější, protože i pouze při jednořádkovém vstupu to správně nevytiskne nic, kdežto předchozí varianta vyhodí (nesprávně) prázdný řádek.

PS: Já to nevymýšlel, pouze jsem použil a upravil zde jeden příklad (tato stránka se vždy hodí ...).

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.