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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |