Premysl Hruby lin-konf na post.cz
Úterý Březen 14 15:34:24 CET 2006


Miroslav BENES wrote:
> Přeji krásný den !
> 
> Mám dotaz na editor sed : Dá se pomocí něj nahrazovat zvolená sekvence
> znaků aktuálním číslem řádku ? Vzhledem k tomu, že sed používá číslo
> řádku pro adresování, tak ji určitě interně ví. Kromě toho i příkazem
> "=" vypíše číslo řádku a adřádkuje. Jenomže já bych to rád použil v
> následující situaci :
> 
> Mám skript, který je volán mnohokrát za den. Pracuje (většinou) bez
> problémů, ale občas se stane, že někde zhavaruje.
> Aby se dalo lokalizovat problematické místo, přidávám do toho skriptu
> řádky ve stylu :
> ...
> echo "Ted bude operace xyz : " >>$LOGFILE
> xyz
> RESULT=$?
> echo "vysledek oparace xyz : $RESULT" >>$LOGFILE
> ...
> 
> I tento výstup je nepřehledný, takže bych rád doplnil i číslo řádku kde
> vzniknul :
> ...
> echo "147: Ted bude operace xyz : " >>$LOGFILE
> xyz
> RESULT=$?
> echo "150: vysledek oparace xyz : $RESULT" >>$LOGFILE
> ...
> 
> Ručně psaná čísla řádku se ale nedají rozumně udržovat.
> Dala by se použít finta, při které bych editoval "zdrojový" skript :
> ...
> echo "qqq: Ted bude operace xyz : " >>$LOGFILE
> ...
> .. a pak bych to prohnal přes sed :
> sed -e "s/qqq/??/g" <zdrojovy.sh >konecny.sh
> 
> Jenomže nevím, jak mám svůj požadavek sed-u sdělit.
> 
> 
> P.S. Podle manuálových stránek jde toto v bash-i řešit proměnnou
> $LINENO, která obsahuje číslo právě prováděného řádku. Ptám se tedy spíš
> jen ze zvědavosti jestli něco takového existuje v sed-u, protože by to
> bylo použtelné i mimo bash.
> 

a co pouzit awk? ten ma primo promennou NR a regexp by mel umet taky.

-Ph



Další informace o konferenci Linux