Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Peterx 20 Srpna 2009, 09:56:43
-
Zdravim kazdeho.
Hladam nejake navody ako pracovat z BASH z textom. Ako naist nieco v texte a niekam to zapisat. Ako precitat urcity riadok, urcity znak, naist riadok a vypisat nasledujucich niekolko riadkov, precitat riadok, niekam zapisat, potom dalsi a dalsi atd...
Nenajde sa niekde nejaky manual, alebo aspon zoznam prikazov ktore si uz nastudujem?
Proste hladam nieco komplexneho.
Dik
-
man bash
http://tldp.org/LDP/abs/html/
-
Dik za odpoved, fajn zdroj, urcite si to nastudujem... Ale kym to nastudujem potrebujem par veci vyriesit, pre to by som uvital konkretnejsie odpovede :)
-
Dik za odpoved, fajn zdroj, urcite si to nastudujem... Ale kym to nastudujem potrebujem par veci vyriesit, pre to by som uvital konkretnejsie odpovede :)
Až si nebudeš s něčím vedět rady tak napiš a my ti pomůžem :).
-
No je par veci z ktorimi si neviem pomoct :)
1 moj problem je tu:
http://forum.ubuntu.cz/index.php/topic,38443.0.html
Este by som rad zistil ako mozem precitat urcity riadok zo suboru.. nieco ako cat -riadok 5 subor.txt :)
A este ma trapi jedna vec.
Potrebujem spravit takyto skript:
wget http://adresa/(1 riadok zo suboru)
wget http://adresa/(2 riadok zo suboru)
wget http://adresa/(3 riadok zo suboru)... az kym su riadky
nasledne
rozbal 1 riadok zo suboru
rozbal 2 riadok zo suboru
rozbal x riadok zo suboru
atd...
Tu mi ide o to ze potrebujem stiahnut textak kde je zoznam suborov ktore ma stiahnut, nasledne rozbalit a mozno s nimi este nieco spravit.
-
sed '2!d' soubor
vypíše druhou řádku ze souboru
pak to můžeš třeba použít jako tar -parametry `sed '2!d' soubor` a rozbalí ti to ten druhý řádek, jako název nebo co tam z toho bereš
snad to není blbost, teprv sem vstával tak mi to moc nemyslí ;D
-
Tak toto pomohlo, uz to len zapisat nejako tak aby bral vsetky riadky napriklad takto:
X=1
parameterX=sed 'X!d' soubor
parameterX+1=sed 'X+1!d' soubor
parameterX+1+1=sed 'X+1+1!d' soubor
z tym ze ak su v subore 3 riadky tak to skonci takto:
parameterX+1+1+1=sed 'X+1+1+1!d' soubor / cize parameter3=sed '3!d' soubor
je to mozne?
-
Niekto pridal odpoved, ale mne sa nezobrazuje, neviem preco...
Odpoved bola tato:
"
Splácal sem něco takovýho, vypadá to, že to funguje tak vyzkoušej
Kód:
#!/bin/bash
i=5
for x in foo{1,2,3,4,5}
do
x=$(sed "${i}!d" soubor)
echo $x ## tady si dej operaci jakou chceš, já sem to jenom tiskl ten řádek
i=$((i+1))
done
"
Je to fajn len ma trapi tento riadok:
for x in foo{1,2,3,4,5}
musim tam totiz napisat kazdy riadok z ktorim to ma vykonat, avsak ja dopredu neviem kolko ich bude.
Ja by som to potreboval napisat tak aby to proste na poslednom riadku skoncilo. ci ich je 100, alebo len 5.
-
Jo to sem psal já, ale je to blbost, nefunguje to tak jak sem to myslel a chtěl.
Možná něco takovýho
#!/bin/bash
for x in $(seq 1 $(wc -l soubor | awk '{print $1}'))
do
foo=$(sed "${x}!d" soubor)
echo $foo ## tady si dej operaci jakou chceš, já sem to jenom tiskl ten řádek
done
snad to aspon trochu pomůže, nebo tě to přiblíží k tomu co chceš, já teď mizím tak když tak pomůže někdo jinej nebo večer. BBT určitě přijde s něčím lepším jak ho znám :)
-
To asi budem potrebovat dalsiu radu :)
-
To asi budem potrebovat dalsiu radu :)
Počkej až přijde Bad Batz Maru (nebo jak si to NTZ píše), určitě něco vymyslí ;).
-
Hehe a já tady plácám takový ty, ale v tvojím případě by to šlo nejspíš aj způsobem
cat soubor | while read line; do echo $line; done
samozřejmě místo echo $line můžeš dát jakoukoliv akci
-
Super, presne toto som potreboval :)
Dik
Este malickost. Je njako mozne zmazat medzeri pred a po texte?
-
Přes while read line ti to stejně mezery nenačte :)
jinak třeba
[prema@fedora ~]$ echo " ahoj a b c d " | sed 's/\ //g'
ahojabcd
-
Dik za pomoc uz mi to funguje :)
-
Super, presne toto som potreboval :)
Dik
Este malickost. Je njako mozne zmazat medzeri pred a po texte?
Tady ( http://sed.sourceforge.net/sed1line_cz.html ) se nalezaji uz hotove zajimave ukazky manipulace textem pomoci sed-u.
-
Dik, velmi uzitocne, doporucujem kazdemu ;D