たくさんのテキストを含むログファイルがありますが、その一部は役に立たないものです。このログには、私にとって重要な行がいくつかあります。これらの線のパターンは次のとおりです。
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x00000001 (NEEDED) Shared library: [ld.so.1]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
NEEDEDキーワードは、私にとって重要なすべての行にあります。[]の間のキーワードは私にとって重要なものです。それらを繰り返さずに、これらすべての文字列のリストを作成する必要があります。
私はこれをPythonで実行しましたが、スクリプトを実行したいマシンではPythonが利用できないため、bashでスクリプトを作り直す必要があります。私はbashの基本的なものしか知らず、問題の解決策を見つけることができません。
私が使用したPythonスクリプトは次のとおりです。
import sys
import re
def testForKeyword(keyword, line):
findStuff = re.compile(r"\b%s\b" % keyword, \
flags=re.IGNORECASE)
if findStuff.search(line):
return True
else:
return False
# Get filename argument
if len(sys.argv) != 2:
print("USAGE: python libraryParser.py <log_file.log>")
sys.exit(-1)
file = open(sys.argv[1], "r")
sharedLibraries = []
for line in file:
if testForKeyword("NEEDED", line):
libraryNameStart = line.find("[") + 1
libraryNameFinish = line.find("]")
libraryName = line[libraryNameStart:libraryNameFinish]
# No duplicates, only add if it does not exist
try:
sharedLibraries.index(libraryName)
except ValueError:
sharedLibraries.append(libraryName)
for library in sharedLibraries:
print(library)
この問題の解決を手伝ってもらえますか?前もって感謝します。