繁体   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