簡體   English   中英

用他們的 md5sum 替換日志文件中的電子郵件

[英]Replacing emails in log file with their md5sum

我試圖用它們的 md5sum 替換下面日志文件中的電子郵件,而不是用純文本格式:

2021-09-26 03:52:29 email1@domain.com some_info1
2021-09-26 03:52:29 email1@domain.com some_info1
2021-09-26 03:53:11 email2@domain.com some_info2
2021-09-26 03:53:11 some_log_info
2021-09-26 03:53:11 email2@domain.com some_info2
2021-09-26 03:53:11 some_log_info
2021-09-26 03:55:32 email1@domain.com some_info1
2021-09-26 03:55:32 email1@domain.com some_info1
2021-09-26 03:56:11 email2@domain.com some_info2
2021-09-26 03:56:11 some_log_info

使用下面的 bash 腳本,我得到了錯誤的結果,它們打印在標准輸出上。 我需要文件內容相同但帶有散列電子郵件。

#!bin/bash
cat sample.log | grep -Po "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}" | while read i ; do sed "s/$i/$(echo $i | md5sum | cut -f 1 -d ' ')/g"; done

結果

b063316737db418bb9d11bb938038b9e
email2@domain.com
email2@domain.com
b063316737db418bb9d11bb938038b9e
b063316737db418bb9d11bb938038b9e
email2@domain.com

我怎樣才能改變它以在新文件中得到預期的結果?

2021-09-26 03:52:29 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:52:29 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:53:11 79f1af80136834378f073bab325f70af some_info2
2021-09-26 03:53:11 some_log_info
2021-09-26 03:53:11 79f1af80136834378f073bab325f70af some_info2
2021-09-26 03:53:11 some_log_info
2021-09-26 03:55:32 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:55:32 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:56:11 b063316737db418bb9d11bb938038b9e some_info2
2021-09-26 03:56:11 some_log_info

如果你的文件總是有空格分隔的字段,並且如果 email 地址總是第 3 個,就像你展示的例子一樣,一個簡單的while - read循環是一個選項。 將 output 重定向到臨時文件file.tmp的示例:

$ while read -r d h e i; do
    if [[ "$e" =~ @ ]]; then
      m=($(md5sum <<< "$e"))
      e="${m[0]}"
    fi
    printf '%s %s %s %s\n' "$d" "$h" "$e" "$i"
  done < file > file.tmp
$ cat file.tmp
2021-09-26 03:52:29 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:52:29 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:53:11 79f1af80136834378f073bab325f70af some_info2
2021-09-26 03:53:11 some_log_info 
2021-09-26 03:53:11 79f1af80136834378f073bab325f70af some_info2
2021-09-26 03:53:11 some_log_info 
2021-09-26 03:55:32 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:55:32 b063316737db418bb9d11bb938038b9e some_info1
2021-09-26 03:56:11 79f1af80136834378f073bab325f70af some_info2
2021-09-26 03:56:11 some_log_info 

這假定任何包含@字符的第 3 個單詞是一個 email 地址。 如果您需要更准確的內容,請修改[[ "$e" =~ @ ]]中的正則表達式。

如果您對結果滿意,請重命名臨時文件:

$ mv file.tmp file

暫無
暫無

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

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