如何用GNU sed或CLI命令匿名化哈希并保留特定$符号
哈希匿名化:替换行首到第一个冒号的内容(保留冒号前的$)
这里提供两种单行CLI方案,均支持管道输入,适配你的需求:
方案1:GNU sed实现
sed -E 's/^.*(\$):/\1:/; s/^[^:]+:/REDACTED:/'
规则说明
- 第一个替换规则
^.*(\$)::匹配行首到$:的全部内容,仅保留$:部分,专门处理COMPUTER$:这种前缀末尾直接跟$的场景。 - 第二个替换规则
^[^:]+::匹配行首到第一个冒号的非空内容,统一替换为REDACTED:,覆盖所有其他前缀(包括DOMAIN\$why:这种包含$但不在冒号前的情况)。
方案2:awk实现(更直观)
awk -F: '{ $1 = ($1 ~ /\$$/) ? "$" : "REDACTED"; print }' OFS=:
逻辑说明
-F:用冒号作为字段分隔符,提取第一个冒号前的前缀内容($1)。- 判断前缀是否以
$结尾:是则将前缀替换为$,否则替换为REDACTED。 OFS=:确保输出时仍用冒号分隔字段,保持原始格式结构。
测试验证
针对你的示例输入:
USER:1234:aad3b435b:abcdef::: COMPUTER$:4321:aad3b435b:abcdef::: DOMAIN\bleh:5678:eaad3b4:fedcba::: DOMAIN\$why:5678:eaad3b4:fedcba:::
两种方案均会输出符合预期的结果:
REDACTED:1234:aad3b435b:abcdef::: $:4321:aad3b435b:abcdef::: REDACTED:5678:eaad3b4:fedcba::: REDACTED:5678:eaad3b4:fedcba:::
内容的提问来源于stack exchange,提问作者ExecutionByFork
相关产品推荐
相关产品推荐

