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

Dotaz: TAR - Výpis na jednom řádku

17.2.2016 17:53 M. Lebeda
TAR - Výpis na jednom řádku
Přečteno: 365×
Odpovědět | Admin
Dd, když spustím tar s přepínačem -v tak dostanu výpis co se zrovna zpracovává, můžu ale nějak minimalizovat ten výstup aby se udržel na jednom řádku ? Děkuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.2.2016 18:39 Sněhulák
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkusil bych rouru do sedu a nahrazovat \n za \r.
17.2.2016 20:48 M. Lebeda
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
A ukážeš mi jak? Nevím co je roura ani sedU :-( Díky
17.2.2016 22:36 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku

Na tohle je sed zbytečně velký kalibr, stačí tr, např.

  tar -xvzf archiv.tar.gz | tr '\n' ' ' ; echo
17.2.2016 23:09 NN
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
Vypisalo prazdny radek.. Mam take jedno:
for line in $(tar cvf foo.tar foo/); do
  echo $line;
  tput cuu1;tput el;
done
17.2.2016 23:59 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
Vypisalo prazdny radek..

mne to funguje
18.2.2016 07:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
Vzhledem k tomu, že vaše řešení (kromě jiných problémů) nejdřív vytvoří celý archiv a teprve potom začne vypisovat jména souborů, neřekl bych, že splňuje zadání …výpis co se zrovna zpracovává…".
18.2.2016 09:58 NN
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
Ze zadani neni poznat jesli se jedna o rozbalovani, nebo baleni. U baleni Vas priklad vypsal prazdnou radku. O jake problemy se jedna? Necham se poucit, v pohode.
18.2.2016 11:15 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
U baleni Vas priklad vypsal prazdnou radku.

Works for me:

mike@unicorn:/srv/debug> tar -cvf kernel-3.12.51-2.0.tar kernel-3.12.51-2.0 | tr '\n' ' ' ; echo
kernel-3.12.51-2.0/ kernel-3.12.51-2.0/kernel-desktop-3.12.51-2.0.nosrc.rpm kernel-3.12.51-2.0/kernel-desktop-3.12.51-2.0.x86_64.rpm kernel-3.12.51-2.0/kernel-desktop-base-3.12.51-2.0.x86_64.rpm kernel-3.12.51-2.0/kernel-desktop-base-debuginfo-3.12.51-2.0.x86_64.rpm kernel-3.12.51-2.0/kernel-desktop-debuginfo-3.12.51-2.0.x86_64.rpm kernel-3.12.51-2.0/kernel-desktop-debugsource-3.12.51-2.0.x86_64.rpm kernel-3.12.51-2.0/kernel-desktop-devel-3.12.51-2.0.x86_64.rpm kernel-3.12.51-2.0/kernel-devel-3.12.51-2.0.noarch.rpm kernel-3.12.51-2.0/kernel-macros-3.12.51-2.0.noarch.rpm kernel-3.12.51-2.0/kernel-source-3.12.51-2.0.noarch.rpm kernel-3.12.51-2.0/kernel-source-3.12.51-2.0.src.rpm kernel-3.12.51-2.0/kernel-source-vanilla-3.12.51-2.0.noarch.rpm 
O jake problemy se jedna?
  • Nesplňuje to zadání - nevypisuje názvy do jednoho řádku oddělené mezerami.
  • Tím, že se pro expanzi musí nejdřív provést celý příkaz, bude potřeba zbytečně alokovat odpovídající množství paměti (pro velké archivy hodně velké). Jednoduchý filtr může výstup zpracovávat průběžně.
  • Bude-li jméno souboru obsahovat mezery, bude parser tyto mezery považovat za oddělovač, takže váš skript zobrazí každou část zvlášť.
  • Na dostatečně rychlém stroji nemusí být nic vidět, protože řádek smažete hned po vypsání jména.

Takže když už nějak takhle, vhodnější by bylo třeba

echo
tar -cvf foo.tar foo/ | while read file; do
    tput cuu1
    tput el
    echo "$file"
done
18.2.2016 12:03 NN
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
můžu ale nějak minimalizovat ten výstup aby se udržel na jednom řádku ?
Ja tu nikde nic o mezerach nevidim, ale argumenty uznavam.
18.2.2016 11:44 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: TAR - Výpis na jednom řádku
Odpovědět | | Sbalit | Link | Blokovat | Admin
můžu ale nějak minimalizovat ten výstup aby se udržel na jednom řádku ?
Nějaké možnosti už byly popsány, ale určitě nic z toho není "minimalizace" výstupu. Protože je jen nahrazen jeden jednobytový oddělovač objektů "NewLine" za jiný jednobytový oddělovač objektů "Space". A pokud je výstup dále zpracováván tak v tom zpracování se moc nemusí lišit, čím jsou objekty odděleny.

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.