我有一个包含大量文本的日志文件,其中一些是无用的。在这个日志中有一些对我很重要的行。这些行的模式是:
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)
你能帮我解决这个问题吗?提前致谢。