58

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

4

5 に答える 5