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

使用SED/AWK实现单词前五位保留其余字符替换为*的脱敏处理

刚好我之前处理过类似的需求,给你整理了SED和AWK两种实现方案,都能完美满足你的单词脱敏要求👇

用SED实现单词脱敏
  • 执行命令:
sed -E ':loop; s/^(.{5})(.)/\1*/; t loop' your_file.txt
  • 细节解释:
    • :loop 定义一个循环标签,用来重复执行替换操作
    • s/^(.{5})(.)/\1*/ 匹配前5个字符后的任意单个字符,把这个字符替换成*
    • t loop 如果上一步的替换成功了,就跳回loop标签继续循环,直到前5个字符后面的所有字符都被替换成*
    • 对于长度≤5的单词,因为找不到前5个字符后的匹配项,会直接输出原单词,不会做修改
用AWK实现单词脱敏

方法一(直观易懂)

awk '{
    len = length($0)
    if (len <= 5) {
        print $0
    } else {
        prefix = substr($0, 1, 5)
        stars = sprintf("%" (len - 5) "s", "")
        gsub(/ /, "*", stars)
        print prefix stars
    }
}' your_file.txt
  • 细节解释:
    • 先获取当前单词的长度len
    • 如果单词长度≤5,直接打印原内容
    • 如果长度超过5,先截取前5个字符作为前缀,再生成对应数量的*字符串,最后拼接两者输出

方法二(简洁紧凑版)

awk '{n=length($0); print substr($0,1,5) substr("************************",1,n>5?n-5:0)}' your_file.txt
  • 细节解释:
    • 提前准备一个足够长的*字符串,根据单词长度动态截取需要的*数量,和前5个字符拼接后直接输出,代码更精简

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:37:50