Portál AbcLinuxu, 12. května 2025 02:50

Dotaz: BASH-Tar a výpis do souboru

31.7.2012 21:40 MM
BASH-Tar a výpis do souboru
Přečteno: 450×
Odpovědět | Admin
Ahoj, jak bych mohl vypsat seznam souborů které daný soubor tar obsahuje, včetně cesty do souboru? Problém je ale v tom, že bych potřeboval na začátek každého řádku který uloží tar a na konec každého řádku vložit vlastní text.

obsah soubory by pak mohl vypadat takto...
MUJ TEXT|toto vložil tar|MUJ DRUHY TEXT
MUJ TEXT|toto vložil tar|MUJ DRUHY TEXT
MUJ TEXT|toto vložil tar|MUJ DRUHY TEXT
MUJ TEXT|toto vložil tar|MUJ DRUHY TEXT
MUJ TEXT|toto vložil tar|MUJ DRUHY TEXT
Moc děkuji za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.7.2012 21:47 l4m4
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pomalu by možná mohlo být načase začít taky číst dokumentaci a řešit alespoň jednoduché problémy samostatně...
tar -tf archive.tar | sed 's/.*/MUJ TEXT|\0|MUJ DRUHY TEXT/'
31.7.2012 22:11 MM
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Já se vážně snažím, ale není to vůbec lehký, hlavně v mých letech, všechno je anglicky a o to je to daleko těžší :-( jinak díky za pomoc, můžu ještě o úprava která mě nenapadla.. až jsem vyděl výsledek. Můžu nějak získat i to co aktuálně vkláda ten tar a přidat ho ještě jednou ale ke svému textu? Děkuji
výsledek by pak měl vypadat finalně takto..
MUJ TEXT|MUJ DRUHY TEXT+toto vložil tar|toto vložil tar
MUJ TEXT|MUJ DRUHY TEXT+toto vložil tar|toto vložil tar
MUJ TEXT|MUJ DRUHY TEXT+toto vložil tar|toto vložil tar
31.7.2012 22:21 l4m4
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Ano. To je to \0, můžeš to použít klidně desetkrát.
31.7.2012 22:52 MM
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
díky moc, tak tady je funkční výsledek
tar -tf `pwd`/$ITEM | sed "s/.*/Extrahuji|tar -tf $ITEM \/\0|\/\0/" >> $DATA_FILE
a tento už hází chybu (doplněno o tučný text)
tar -tf `pwd`/$ITEM | sed "s/.*/Extrahuji|tar -tf `pwd`/$ITEM \/\0|\/\0/" >> $DATA_FILE
sed: -e expression #1, char 26: unknown option to `s'
co se mu nelíbí? díky
31.7.2012 23:07 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Lomítko je oddělovač mezi hledanou částí, nahrazující částí a případnými parametry. Přidal jsi lomítko navíc, takže nahrazující část se bere jen po pwd a zbytek se sed snaží interpretovat jako parametry.

Lomítko jde budto escapovat zpětným lomítkem tak jako máš u \0, anebo, v tomhle případě asi lépe, použít jako oddělovač jiný znak, který se nevyskytuje v hledaném ani nahrazovaném řetězci. Může to být cokoliv, prvním použitím za "s" se ten znak určí.
31.7.2012 23:10 MM
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Tím lomítkem to nebude, nefunguje ani jeden příklad :(
tar -tf `pwd`/$ITEM | sed "s/.*/Extrahuji|tar -tf `pwd`\/$ITEM \/\0|\/\0/" >> $DATA_FILE
tar -tf `pwd`/$ITEM | sed "s/.*/Extrahuji|tar -tf `pwd` $ITEM \/\0|\/\0/" >> $DATA_FILE
31.7.2012 23:19 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Ale bude, jenže to první lomítko je už v expanzi `pwd`. (Sakra, to tu musím počítat do 26 já? :) )
31.7.2012 23:26 MM
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
ale dyť tam to lomítko vůbec nemám a stejně to nejde a chyba je stejná :-(
tar -tf `pwd`/$ITEM | sed "s/.*/Extrahuji|tar -tf `pwd` $ITEM \/\0|\/\0/" >> $DATA_FILE
31.7.2012 23:33 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru

A co vyleze z `pwd`? Nejprve se provádí nahrazení, pak až spouštění příkazů. Hodí se občas použít v bashi set -x, čímž se zapne "debugovací" výpis s postupným prováděním řádky. Anebo prostě jen jednoduché echo "s/.*/Extrahuji|tar -tf `pwd` $ITEM \/\0|\/\0/".

31.7.2012 23:41 MM
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
tohle
echo "s/.*/Extrahuji|tar -tf `pwd` $ITEM \/\0|\/\0/".
mi vypíše tohle
s/.*/Extrahuji|tar -tf /tmp/backup/http/ zaloha.tar.gz \/\0|\/\0/.
31.7.2012 23:47 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Takže tam lomítko je, však? Dokonce tak, že první znak za ním je na 25. pozici, jak říká chybová hláška ...
1.8.2012 00:16 MM
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Hm, tak že asi ze všeho nejdřív budu muset v proměnná pwd nahradit / za \/ a pak by to mohlo jít, mám pravdu? Tak já jdu hledat jak se to dělá :-( Díky za trpělivost
1.8.2012 01:15 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru

No v bashi se dá k nahrazení použít úděsná konstrukce ${PWD//\//\\/}, ale v tomhle případě bych se raději podobným ascii-art výtvorům vyhnul a zvolil si nějaký vhodnější znak coby oddělovač pro sed, třeba dvojtečku: sed "s:.*:...$PWD...:" (proměnná $PWD obsahuje aktuální adresář, tady by šlo použít i `pwd`, ale ascii-artová šílenost nahoře pracuje jen s proměnnou), pokud tedy jde předpokládat, že v cestě nebude dvojtečka.

Anebo na to jít úplně jinak, vzhledem k tomu, že cílem přidat text bez dalších úprav, dá se úplně vyhnout sed-u a použít něco jako: tar ... | while read; do echo "Extrahuji|tar -tf $PWD/$ITEM/$REPLY|/$REPLY/"; done

(V proměnné $REPLY je načtena vždy jedna řádka z pipe pomocí příkazu read.)

1.8.2012 11:49 darkenik
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
lomitko sa tam dostane po vykonani a vlozeni vystupu z pwd ale sed moze mat oddelovac nie len lomitko

takze by som skusil
tar -tf `pwd`/$ITEM | sed "s@.*@Extrahuji|tar -tf `pwd` $ITEM /\0|/\0@" >> $DATA_FILE
alebo
tar -tf `pwd`/$ITEM | sed "s:.*:Extrahuji|tar -tf `pwd` $ITEM /\0|/\0:" >> $DATA_FILE
alebo hocijaky iny oddelovac, ktory sa tam bude vyskytovat len tri krat BTW: tar -t len testuje archiv neextrahuje
31.7.2012 22:38 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: BASH-Tar a výpis do souboru
Ke čtení toho jde najít dost i česky. Konkrétně tady se hodí klíčové slovo "regulární výrazy" a fakt stojí za to si trochu počíst.

Pár příkladů ... hnedka tady na portálu třeba: http://www.abclinuxu.cz/serialy/unixove-nastroje anebo http://www.abclinuxu.cz/serialy/bash; další zajímavý hodně zhuštěný text: http://atrey.karlin.mff.cuni.cz/~johanka/vyuka/pohadky_unix.html; seriál "u konkurence": http://www.root.cz/serialy/regularni-vyrazy/ ... atd.

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.