Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: timmynovak 05 Února 2012, 09:06:17

Název: Sed a zpracování po řádcích
Přispěvatel: timmynovak 05 Února 2012, 09:06:17
Ahoj,
mám sed v rouře a potřeboval bych, aby mi jednotlivé řádky posílal v rouře dál ihned a nečekal na konec souboru, jde to nějak zařídit? Našel jsem přepínač -u, ale nevím, kolik bajtů se při tomto režimu přečte - může mi na vstup přijít řádek i o dvou bajtech. Díky.
Název: Re:Sed a zpracování po řádcích
Přispěvatel: GdH 05 Února 2012, 10:25:58
Co to sedu posílat rovnou po řádcích:
Kód: [Vybrat]
.. | while read line; do sed ...; done | ..
Edit: jeden středník se mi zatoulal kam neměl...

Edit1: kurnik, jsem to zapsal trochu jinak, než jsem zamýšlel. Kdyby se $line vpasovala do toho sedu, tak ano, jinak takto:

Kód: [Vybrat]
.. | while read line; do echo $line; done | sed ...
Název: Re:Sed a zpracování po řádcích
Přispěvatel: timmynovak 05 Února 2012, 11:32:32
zkoušel jsem to (zpracovávám výstup z nc), ale nějak mi to zlobilo, zatímco roura funguje skvěle.
Název: Re:Sed a zpracování po řádcích
Přispěvatel: GdH 05 Února 2012, 21:01:56
Roura je to furt, jen to sed dostává po řádcích. Pokud nedodáš nějaký konkrétní příklad, na kterém to kolabuje, tak ti neporadím zcela určitě.
Název: Re:Sed a zpracování po řádcích
Přispěvatel: timmynovak 05 Února 2012, 21:25:25
Kód: [Vybrat]
nohup nc -l -d -k  8888 | sed -u '/^$/d;s/^/INSERT INTO a (a) VALUES ('"'"'/;s/$/'"'"');/'  | mysql -u xxx --password='xxx' xxx &

no a občas se při krátkých řádcích získaných z nc stane, že se čeká na další a teprve pak se to pošle do sed, nebo to alespoň tak vypadá:(
Název: Re:Sed a zpracování po řádcích
Přispěvatel: GdH 05 Února 2012, 21:32:06
Kód: [Vybrat]
nc -l -d -k  8888 | while read line; do echo $line; done | sed '/^$/d;s/^/INSERT INTO a (a) VALUES ('"'"'/;s/$/'"'"');/'  | mysql -u xxx --password='xxx' xxx
?