sed (bash) a číslo řádku ve skriptu

Miroslav BENES miroslav_benes na zdas.cz
Úterý Březen 14 14:53:06 CET 2006


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.






Další informace o konferenci Linux