私は CentOS に長くてよく維持されていない bash スクリプトを持っています。多くのログ行がエコーを使用しており、そのうちの約 3 分の 1 がログ ファイルに記録されています。残りのエコー行を変更して、このログ ファイルにもティーを追加したいと考えています。
myscript.sh の例を次に示します。
command1
echo "hi1"
echo "hi2" | tee -a my.log
echo "hi3 tee"
command2
このファイルで何かを実行した後、内容を次のように変更したいと思います。
command1
echo "hi1" | tee -a my.log
echo "hi2" | tee -a my.log
echo "hi3 tee" | tee -a my.log
command2
sed または awk を正規表現で使用する必要があると考えています。ロジックは、「行に ' ' が含まれecho
、その後に ' 'が含まれていない場合、行末に' '| tee
を追加| tee -a my.log
する」です。
いろいろ検索した結果、これが今までで一番いいです。
sed --in-place=_BACKUP '/^.*echo\(?!\| tee$\)*/ s/$/ \| tee -a my.log/' myscript.sh
しかし、これは.| tee -a my.log
を含む各行の末尾に追加されるだけecho
です。
誰か良いアイデアはありますか?