如何使用grep让通配符匹配恰好64个字符?
匹配恰好64个字符的行,过滤长度不符的内容
嘿,要筛选恰好64个字符的行是吧?这在文本处理里是很常见的需求,给你两个实用的命令行方案,不管你用awk还是grep都能轻松搞定:
方案1:用awk按行长度筛选
awk会逐行处理文本,我们直接判断整行的字符长度是否等于64即可:
awk 'length($0) == 64' your_file.txt
效果说明
拿你提供的bar.txt举例:
- 第一行的哈希值
1121cfccd5913f0a63fec40a6ffd44ea64f9dc135c66634ba001d10bcf4302a2正好是64个字符,会被保留输出; - 像
aa460da4af72c482231e28e688e01f2778a88ce31a08826899d54ef7183998b5 / /Users/1337/R这种带路径的行,长度远超过64,会被忽略; - 最后那个截断的哈希
53c234e5e8472b6ac51c1ae1cab3fe06fad...长度不足64,同样会被过滤掉。
方案2:用grep正则精准匹配整行
用正则表达式匹配恰好64个任意字符的整行:
grep -xE '.{64}' your_file.txt
参数解释
-x:要求整行完全匹配正则,避免匹配到行内包含64字符但整体长度不符的情况;-E:启用扩展正则,让.{64}语法生效(表示任意字符重复64次);.{64}:核心正则,匹配恰好64个任意字符。
进阶:匹配特定模式的64字符
如果你的目标是类似SHA256哈希这类仅包含十六进制字符的64位内容,可以把正则改成更精准的版本:
grep -xE '[0-9a-fA-F]{64}' your_file.txt
这样只会保留由0-9、a-f、A-F组成的64字符行,避免误匹配其他无关内容。
内容的提问来源于stack exchange,提问作者leetbacoon
相关产品推荐
相关产品推荐

