Azt kéne valahogy elérnem, hogy egy fájlba beleírni a kimenetet úgy, hogy a kimenet minden sora kapjon egy adott prefix-et. A prefix függ attól hogy melyik kimenetre érkezett a szöveg. (O- stdout, E- strerr)
Pár próbálkozásom már volt, de a kimenet sorrendje nem volt megfelelő amikor a kimeneteket összefűztem.
A gcc warningjait szeretném egy felületen máshogy megjeleníteni, így a megoldás gyakorlatilag teljesen mindegy milyen nyelven van. (c, c++, java, python, perl)
Ha esetleg tudtok olyan programot amelyik nem terminált emulálva jeleníti meg a programfordítás kimenetét akkor az is jöhet, aztán kiszedem a forrásából a megoldást. :)
- 944 megtekintés
Hozzászólások
Nem is értem. Mondjuk milyen nyelvben akarod megcsinálni? Itt egy megoldás pl. tetszőleges program kimenetének átalakítására, sed -del:
printf '%s\n' alma szilva barack | sed -e 's/^/ez-lesz-a-sor-elejen /'
- A hozzászóláshoz be kell jelentkezni
"A prefix függ attól hogy melyik kimenetre érkezett a szöveg. (O- stdout, E- strerr)"
- A hozzászóláshoz be kell jelentkezni
ha egyszerűen úgy állsz hozzá hogy
"program >egyik 2>masik", (majd az így kapott két fájlt úgy formázod ahogy tetszik)
ezt pedig addig bűvészkeded hogy pl:
((program | sed -e "s/^/O-/" ) 2>&1) | sed -e "s/^/E-/" -e "s/^E-O-/O-/" >kivantfajl
ezt ugyan lehet egy kicsit javítani, pl a kötőjeleket escapelni, de akkor is abba a problémába ütközünk hogy a stdout bufferelve van, a stderr pedig nem, így a sorrend megintcsak nem lesz oké, és az első, teljesen szétválogatóval szemben ez még össze is keveri,
talán gha valahogy a bufferelés le lehetne szedni a stdoutról..
- A hozzászóláshoz be kell jelentkezni
> talán gha valahogy a bufferelés le lehetne szedni a stdoutról..
Patkolt gcc-vel ez még jó is lehet. Szétnézek a forráskódban.
Bár akkor még mindig gond lenne a make által futtatott összes parancs.
Lehet, hogy egy tty emuláció megírása jobb megközelítése lenne a problémának...
- A hozzászóláshoz be kell jelentkezni
> a kimenet sorrendje nem volt megfelelő amikor a kimeneteket összefűztem.
Nyilván puffereli a kimeneteket a gcc. És akkor akármit csinálsz, sose lesz megfelelő.
> hogy a kimenet minden sora kapjon egy adott prefix-et.
Hülye ötlet: futtasd kétszer. Első futtatáskor külön fájlba irányítva az STDOUT, STDERR -t; a második futtatáskor pedig már fel lehet használni az első futtatáskor kiosztott prefixeket. Így meg lesz a prefix is, meg a sorrend is jó lesz.
Egyébként reguláris kifejezésekkel lehetne szétválogatni a sorokat, de az macerás.
- A hozzászóláshoz be kell jelentkezni
> Nyilván puffereli a kimeneteket a gcc. És akkor akármit csinálsz, sose lesz megfelelő.
Igen erre jutottam én is.
- A hozzászóláshoz be kell jelentkezni