これはSEDの問題です。
Quartz Composer(Mac OSX)スクリプトで次の作業を行っています。
- ディレクトリから最後の.logを開きます。
- そのファイルの最後のテキスト行を取得し、その最初の24文字を削除します。
- 最後の.log内に新しい行が作成されるたびに、最後の行を表示します
これはとても簡単だと思います。現時点では、これをQCで行っており、ほぼ機能しています。しかし、 getFileName.shとgetLastLineOfLog.shの両方のSEDコマンドに問題があります
getFileName.sh
#!/bin/bash
cd /Users/Me/
/bin/echo `ls -tr *.log | tail -1`
ここで必要なのは、最後の.logファイルを開くことです。この名前構造は127.0.0.1、NUMBER.logで、NUMBERセクションは5桁の数字です。数値が大きいほど、.logファイルは新しくなります。これで、最初の.logファイルだけが開きます。
それを行うための正しいコマンドをSEDに書き込む方法を知っていますか?
getLastLineOfLog.sh
#!/bin/bash
/usr/bin/tail -1 /Users/Me/$1 | sed 's/^.\{24\}//' > /Users/Me/$1.log
echo `/usr/bin/tail -1 /Users/Me/$1.log`
この2番目のファイルでは、ロードされた.logの最後のファイルを取得し、最初の24文字なしでエコーしようとしました。動作しますが、新しい.log.logを作成します。(など)関数が通過するたびにファイルする、避けたいこと。
SEDコマンドの結果を新しいファイルに出力する必要がありますか?どうすればそれをできるだけ簡単に行うことができますか?
前もって感謝します。