加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

需要在bash中解析日志文件

发布时间:2020-12-15 22:27:38 所属栏目:安全 来源:网络整理
导读:我有一个包含大量文本的日志文件,其中一些是无用的.在这个日志中有一些对我很重要的行.这些行的模式是: 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: [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%sb" % 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)

你能帮我解决这个问题吗?
提前致谢.

解决方法

使用awk假设infile有问题数据的一种方法:

awk '
    $2 ~ /NEEDED/ { 
        lib = substr( $NF,2,length($NF) - 2 ); 
        libs[ lib ] = 1;
    } 
    END { 
        for (lib in libs) { 
            printf "%sn",lib;
        } 
    }
' infile

输出:

libc.so.6                                                                                                                                                                                                                                    
libgcc_s.so.1                                                                                                                                                                                                                                
ld.so.1                                                                                                                                                                                                                         
libm.so.6

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读