прочитать выходной файл журнала и распечатать все уникальные пути к файлам, используя скрипт bash / python - PullRequest
0 голосов
/ 17 апреля 2019

Из приведенного ниже файла журнала вывода я хочу напечатать все уникальные пути к файлам (например, / AWS Cloud / Test / DEMO / Service / DEV), используя скрипт bash / python

Платформа ОС: Linux

Вот выходной файл журнала (output.log):

/AWS Cloud/Test/DEMO/Service/DEV:    google.service.instance = https://aoodev.com (ms: azure_mico, cs: docker_telco)
/AWS Cloud/Test/DEMO/Service/QA1:    yahoo.service.instance = aoodit.com (ms: yahoo_mico, cs: yahoo_telco)
/AWS Cloud/Test/Blender/Service/QA1:    google.service.instance = aoodev.com (ms: azure_mico, cs: google_telco)
/AWS Cloud/Test/DEMO/Service/QA1:    yahoo.service.instance = aoodqa.com
/Azure Cloud/Test/DEMO/Service/DEV:    google.service.instance = aoodev.com
/Azure Cloud/Test/DEMO/Service/QA1:    https://yahoo.service.instance = aoodit.com
/Azure Cloud/Test/DEMO/Service/DEV:    google.service.instance = aoodev.com

Ожидаемый результат:

azure_micro docker_telco / AWS Cloud / Test/ DEMO / Сервис / DEV yahoo_mico yahoo_telco / Облако AWS / Тестирование / DEMO / Сервис / QA1
azure_micro google_telco / Облако AWS / Тестирование / Блендер / Сервис / QA1
/ Облако Azure / Тестирование / DEMO / Сервис / DEV
/ Облако Azure / Тестирование / ДЕМО / Служба / DIT

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Вам нужно регулярное выражение и модуль Python re

Это должно сделать это:

paths = [] # Create an empty list of paths
regex = r'^(\/.+\:).*(ms: )(.+), (cs: )(.+)\)$'

with open("logs.txt") as file: # Open your log file
    for line in file:
        if "cs" in line: # If your line has a cs parameter
            result = re.findall(regex, line)[0]
            paths.append(result[2] + " " + result[4] + " " + result[0])
        else:
            paths.append(line.split(":")[0] + ":") # Old way

paths = list(set(paths)) # Convert to set and then back to list to get all unique path only

print(paths)
0 голосов
/ 17 апреля 2019
#!/usr/bin/python3

# Open log file as read-only
logFile = open('file.log', 'r')

# To have a nice array with every line of the log file
logLines = logFile.read().split('\n') 

for path in logLines:

    # Divides every line into an array, where line[0] would be the path, and line[1] would have everything after the colon. Then, print it.
    print(path.split(':')[0]) 
0 голосов
/ 17 апреля 2019

Работает ли это:

import os
fh = os.open(‘path/to/log’, mode=‘r’)
file_ = fh.readlines()

def parse_paths(file_):
    directories_list = []
    for line in file_:
        path, message = line.split(r‘:\t’)
        directories_list.append(path)
    return directories_list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...