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: tomaskCZ 23 Května 2008, 12:01:38
-
Tailovanim souboru vznikleho programem script se mi dostava do promnenych tento specialni znak, ktery je normalne neviditelny,lze ho nejakym keycode vyradit jako treba mezeru ?
Podobny problem mam i u zachytavanych vypisu VT100 terminalu :)
-
prozrad vic. nechapu problem .. uka na prikladu
-
tady je vystupni soubor, rozbal ho a podivej se dovnitr vi, nebo jinym zpusobem, ktery odhali specialni znaky
http://web.iol.cz/tomkcz/2008-05-23.ssh.dd.log.zip
soubor se vytvari jako vystup tohoto prikazu
gnome-terminal --geometry=110x40+200+200 --window-with-profile=blue -x script -a $log -c "/usr/bin/ssh $1" #2>error.txt"
ja pak resim treba
ifxx=`tail -3 ~/2008-05-23.ssh.nn.log | sed -n '1p' | awk '{ print $3$4$5$6$7}'`
if [ ${ifxx%% *} = 'Nameorservicenotknown' ];then
........
jenze se mi to nikdy s nicim neporovna, prootoze se mi do toho michaji ty '^M' znaky
-
nevim, jak se Ti dari ony znaky, ale me to funguje s nasledujicim vyrazem ::
cat 2008-05-23.ssh.dd.log | sed '/^ssh:/!d;s/^.*://;s/\s//g' | tail -n 1
takze ::> ifxx=`cat 2008-05-23.ssh.dd.log | sed '/^ssh:/!d;s/^.*://;s/\s//g' | tail -n 1` && if [ "${ifxx%% *}" = 'Nameorservicenotknown' ];then echo ok; else echo failed; fi
ok
ad.1) nac tahle "${ifxx%% *}" hruza? nestaci "$ifxx" ??
-
znaky se tam dostanou z prikazu script, ktery pouzivam k logovani session, protoze gnome-terminal to sam o sobe neumi. Ta hruza je tam z pokusu kdy jsem zkousel odstranit mezery jestli se tam nedostavaji.
tvuj postup funguje, nicmene budu si muset vzit manual k sedu to presne polustit, dik
-
/^ssh:/!d; // emulace grepu. vypisujeme pouze radky zacinajici ssh
s/^.*://; // nahradime nicim vse od zacatku radku po posledni ':'
s/\s//g // nahradime globalne nicim vsechny prazdne znaky (\s)
ad.2) manual k sedovskym RE najdes jako ::
man perlre
man perlreref // pripadne jako 'man perlrequick || man perlretut'
-
supr, nasel jsem ty ruzne \w \W \s \S \d \D na http://perldoc.perl.org/perlre.html
umel by jsi take vyresit odstraneni pouze toho ^M na konci radky ?
Sbiram data z jednoho vt100 terminalu expect skriptem, necham ukladat do souboru a na konci kazde radky je ^M, porad mi nevychazi jak toho zmetka presne zacilit, \s potazmo \W funguji, ale vezmou sebou vsechny mezery a znaky.
To ^M bude asi nejake odrolovani, ci co, rozhodi to pak treba i terraterm pri zobrazovani.
-
Tady tenhle znak se objevuje, pokud soubory pouzivaji dosovske zakonceni radku (CR+LF), zatimco unix pouziva pouze LF (nebo ten druhej, sakra). Na prevadeni souboru mezi temato dvema formaty slouzi napr. programy unix2dos nebo dos2unix. Takze otazka? Mohou se ti v tom souboru nejak objevit dosovske konce radku?
-
nemeli by, prvni pripad je linux a ssh zachytavane pres script (man script),
tzn. lze zkusit normalne z prikazovy radky v ubuntu '/usr/bin/ssh (nejaky nedostupny cil) 2>chyba.txt'
a v souboru chyba.txt je na konci ^M ( neni to viditelny znak, nutno pouzit nejaky editor) , takze to prijde z ssh
druhy pripad je z unixu na vt100 terminal (seriovy port),
asi vec, jak jde ktery vystup z aplikace, ale v tomto pripade se to dosu nikde ani nedotkne
pravda je, ze predani dale na do2unix to odstrani a je to vyresene
/usr/bin/ssh dd 2>&1 | dos2unix > chyba.txt
ale v sedu mi to prijde ponekud necilovatelne :)
-
tak na to koukam a taky mi to dela. asi to bude zpusobeno programem ssh.