加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

awk – 如何用’*’替换所有中间字符?

发布时间:2020-12-14 01:28:53 所属栏目:Linux 来源:网络整理
导读:我想用****替换单词的中间部分. 例如 : ifbewofiwfibwofhwifwbifiwjfhwiowfhewifewifewiweifejnwfufehiwwfebnueiwbfiefi 应该成为: if********ibwo*******ifiw***wiow**************eife***fufe*iwwf***********fi 到目前为止,我设法用以下方法替换除前2个
我想用****替换单词的中间部分.

例如 :

ifbewofiwfib
wofhwifwbif
iwjfhwi
owfhewifewifewiwei
fejnwfu
fehiw
wfebnueiwbfiefi

应该成为:

if********ib
wo*******if
iw***wi
ow**************ei
fe***fu
fe*iw
wf***********fi

到目前为止,我设法用以下方法替换除前2个字符之外的所有字符:

sed -e 's/./*/g3'

或者做很多事情:

grep -o '^..' file > start
cat file | sed 's:^..(.*)..$:1:' | awk -F. '{for (i=1;i<=length($1);i++) a=a"*";$1=a;a=""}1' > stars
grep -o '..$' file > end
paste -d "" start stars > temp
paste -d "" temp end > final

解决方法

如果你有一个GNU Awk将字段分隔符设置为空字符串( How to set the field separator to an empty string?),我会使用Awk.

这样,您可以遍历字符并用“*”替换所需的字符.在这种情况下,从最后的第3个到第3个替换:

$awk 'BEGIN{FS=OFS=""}{for (i=3; i<=NF-2; i++) $i="*"} 1' file
if********ib
wo*******if
iw***wi
ow**************ei
fe***fu
fe*iw
wf***********fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读