Portál AbcLinuxu, 10. května 2025 10:09
sed
u a nahrazovat \n
za \r
.
Na tohle je sed zbytečně velký kalibr, stačí tr
, např.
tar -xvzf archiv.tar.gz | tr '\n' ' ' ; echo
for line in $(tar cvf foo.tar foo/); do echo $line; tput cuu1;tput el; done
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?
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
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.