Linux ワード カウント ユーティリティ wc を実行して、/var/log/syslog の現在の行数を調べ、増加していることを検出できるようにしたいと考えています。さまざまなテストを試しましたが、wc から結果が返ってきましたが、行数とコマンド (var/log/syslog など) の両方が含まれています。
したがって、次のように返されます: 1338 /var/log/syslog しかし、必要なのは行数だけなので、/var/log/syslog の部分を取り除き、1338 だけを保持します。
バイト文字列から文字列に変換してから、結果を削除しようとしましたが、喜びはありません。文字列への変換とストリッピング、デコードなどの同じ話 - すべてが私が探している出力を生成できません。
これらは、syslog に 1338 行ある、私が得たもののいくつかの例です。
- b'1338 /var/log/syslog\n'
- 1338 /var/ログ/syslog
この問題を解決するために私が書いたテスト コードを次に示しますが、解決策はありません。
import subprocess
#check_output returns byte string
stdoutdata = subprocess.check_output("wc --lines /var/log/syslog", shell=True)
print("2A stdoutdata: " + str(stdoutdata))
stdoutdata = stdoutdata.decode("utf-8")
print("2B stdoutdata: " + str(stdoutdata))
stdoutdata=stdoutdata.strip()
print("2C stdoutdata: " + str(stdoutdata))
これからの出力は次のとおりです。
2A stdoutdata: b'1338 /var/log/syslog\n'
2B stdoutdata: 1338 /var/log/syslog
2C stdoutdata: 1338 /var/log/syslog
2D stdoutdata: 1338 /var/log/syslog