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