簡體   English   中英

python 腳本:轉換 bash grep 並排序行以將其插入我的 Z23EEEB4347BDD26BFC6B7EE9A37 one

[英]python script : convert a bash grep and sort line to insert it in my python one

這是我在 bash 上的內容,並且需要在 python 上進行轉換(我公司強制沒有選擇),但學習新事物很酷:

輸入測試文件的內容由看起來像的行組成

2022-08-11 13:53:15 ; INFO ; file=toto ; Upload size = 13 KB ; result = ....
2022-08-11 13:54:55 ; other info ; rate = 5.3  ; 
2022-08-11 13:57:02 | not to be kept line 
2022-08-11 13:59:15 ; INFO ; file=titi ; Upload size = 3 KB ; result =...

依此類推,但真實文件將包含其他日志行格式(出於安全原因,我無法在此處復制真實行)所以我使用測試文件

這是給出參加的 output 的確切命令

grep -ihE "size|rate|type_[DI][TA][FT]|source|dest" ../data/*.{log,debug} | sort -t " " -k1,6 -k2 > filtre.txt

所以首先我想在不創建輸出文件的情況下嘗試它

這就是我想用 python 做的事情(我僅限於 2.7 並且不能選擇其他任何東西,不要詢問或提及它)

import os
import re
import string
import sys 

datalogpath = sys.argv[1]       #  get the path of log files to extract datas

searchpattern = re.compile("size|rate|type_D|type_I|source|dest")  # regexp to filter from logs directory

# step 1- equ grep all from 


for filename in os.listdir(datalogpath):
    with open(os.path.join(datalogpath, filename)) as in_file:
        for line in in_file:
            found = searchpattern.search(line)
            if found :
                print(found.group(0))

目前似乎從測試文件中出現的只是

size
size
size
size
size

而不是包含大小或任何其他單詞的每一整行,我正在尋找 grep 命令回復所有 23 行(每行的所有內容)

喜歡

2022-08-11 13:53:15 ; INFO ; file=toto ; Upload size = 13 KB ; result = ....
2022-08-11 13:54:55 ; other info ; rate = 5.3  ; 
2022-08-11 13:59:15 ; INFO ; file=titi ; Upload size = 3 KB ; result =...

所以例如線

2022-08-11 13:57:02 | not to be kept line 

在 output 上不顯示

沒有任何官方文檔章節適合這個用例,

請幫我重新定義 python 格式的正確正則表達式和/或文件讀取方法,如果這個是錯誤的

改變

                print(found.group(0))

                print(line)

您希望在匹配時顯示整行,而不僅僅是重新匹配的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM