You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep匹配内容并在同一行输出?——提取文件中MD5哈希与邮箱地址并同行展示的方法

提取同一行的邮箱与MD5哈希并配对输出

我来帮你搞定这个问题!你的需求是从每行以|分隔的文本里,把对应位置的邮箱和MD5哈希值配对,输出成邮箱::MD5的格式对吧?下面给你几个实用的方案:

方案1:用awk(最快捷的命令行工具)

awk是处理这种结构化文本的利器,直接指定分隔符为|,然后提取对应字段就行。你的每行里,MD5在第3个字段(去掉引号),邮箱在第4个字段(去掉引号),命令如下:

awk -F"|" '{gsub(/'\''/,"",$3); gsub(/'\''/,"",$4); print $4"::"$3}' file.txt

简单解释:

  • -F"|":把|设为字段分隔符
  • gsub(/'\''/,"",$3):清除第3个字段里的单引号
  • gsub(/'\''/,"",$4):清除第4个字段里的单引号
  • print $4"::"$3:按邮箱::MD5的格式输出对应内容

方案2:用sed(正则匹配替换)

如果习惯用sed,也可以通过正则捕获组精准提取内容:

sed -E "s/.*'([a-f0-9]{32})'\|'([^']+)'/\2::\1/g" file.txt

简单解释:

  • -E:启用扩展正则表达式,让捕获组语法更简洁
  • 正则.*'([a-f0-9]{32})'\|'([^']+)':精准捕获32位的MD5哈希值,以及紧随其后的邮箱地址
  • \2::\1:把捕获到的邮箱(第2组)和MD5(第1组)按目标格式替换输出

方案3:用Python脚本(灵活定制)

如果需要更复杂的逻辑或者可复用的脚本,用Python实现也很轻松:

import re

with open('file.txt', 'r') as f:
    for line in f:
        # 匹配每行中的MD5哈希和对应邮箱
        match_result = re.search(r"'([a-f0-9]{32})'\|'([^']+)'", line)
        if match_result:
            md5_hash = match_result.group(1)
            email = match_result.group(2)
            print(f"{email}::{md5_hash}")

这个脚本会逐行读取文件,用正则精准捕获目标内容,然后按要求格式打印输出。

测试你的示例输入,三个方案都会输出:

test@test.com::202cb962ac59075b964b07152d234b70
another@test.com::202cb962ac59075b964b07152d234b70

内容的提问来源于stack exchange,提问作者noob0t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:32:41