BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


求助:怎样用sed把每行的第二个字符到第六个字符替换成星号?
首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
Shell_HAT
光明使者




UID:637535
注册:2007-11-5
最后登录: 2008-10-12
帖子:912
精华:0

可用积分:829 (稍有积蓄)
信誉积分:0
专家积分:5 (本版:5)
空间积分:860
推广积分:0

来自:重庆
状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-7-17 13:46 
原文

123456
1234567
12345

要求结果

1*****
1*****7
1****

请问怎样用sed实现?
请注意不足6位的行的处理。

========================================解决方案分割线========================================

感谢各位朋友的热心帮助,以下是我在HP-UX上测试过的解决方案的不完全统计:

sed '{s/./*/2;s/./*/3;s/./*/4;s/./*/5;s/./*/6;}' urfile



sed '/^../{h;s/^.\(.\{1,5\}\).*/\1/;s/./*/g;G;s/\(.*\)\n\(.\).\{1,5\}\(.*\)/\2\1\3/;}' urfile



sed '
:a
/^.[*]\{5\}/!{
s/\(.[*]*\)./\1*/
/*$/!ta
}' urfile

也有朋友顺便给出了awk的方案,测试过两个:

awk '{a=(substr($0,2,5));gsub(/./,"*",a);print substr($0,1,1)a""substr($0,7,length($0))}' urfile



awk '{for(i=1;i<=length($0);i++) if(i>1&&i<6) printf "*";else printf substr($0,i,1);print ""}' urfile

再次感谢各位!

[ 本帖最后由 Shell_HAT 于 2008-7-23 14:42 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
walkerxk
大天使
水王归来倒计时



UID:351339
注册:2005-12-18
最后登录: 2008-10-16
帖子:2347
精华:0

可用积分:2292 (小富即安)
信誉积分:105
专家积分:15 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


2楼 发表于 2008-7-17 13:51 
简单但不好看的方法:sed 's/[^*]/*/;s/[^*]/*/;s/[^*]/*/;s/[^*]/*/;s/[^*]/*/;s/[^*]/*/'



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

开源资源:
软件下载http://software.lupaworld.com
开源镜像http://mirror.lupaworld.com
手册中心http://man.lupaworld.com
欢迎大家访问,并提出建议和意见。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
Shell_HAT
光明使者




UID:637535
注册:2007-11-5
最后登录: 2008-10-12
帖子:912
精华:0

可用积分:829 (稍有积蓄)
信誉积分:0
专家积分:5 (本版:5)
空间积分:860
推广积分:0

来自:重庆
状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2008-7-17 13:54 
回复 #2 walkerxk 的帖子

$ sed 's/[^*]/*/;s/[^*]/*/;s/[^*]/*/;s/[^*]/*/;s/[^*]/*/;s/[^*]/*/' urfile
******
******7
*****

第一个字符不允许替换



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 net_robber   帅哥 (迷茫的羔羊)
版主-精灵使
堕落的鬼魂




UID:159572
注册:2004-5-20
最后登录: 2008-10-16
帖子:3503
精华:4

可用积分:5257 (富足长乐)
信誉积分:99
专家积分:10 (本版:0)
空间积分:0
推广积分:8

状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2008-7-17 13:58 
Shell处理起来似乎有难度,Perl处理这个容易些,

Shell我不知道有什么办法可以保留第一个字



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________



新领域全方位传媒。
打破以往传统传媒单一方式让虚拟与现实完美结合。
引领新一代 《立体网络传媒文化》 。
异度圣洁诚挚的邀请您参加到我们的《彗星系统》中,与我们一起拥抱明天!
有兴趣的请联系我ZhangQuan@TimeCtrl.net




积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
blackold   帅哥 (黑哥)
大天使



UID:631768
注册:2007-10-22
最后登录: 2008-10-16
帖子:2139
精华:0

可用积分:4442 (小富即安)
信誉积分:0
专家积分:91 (本版:91)
空间积分:0
推广积分:0

来自:北海
状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2008-7-17 14:01 
回复 #1 Shell_HAT 的帖子

try:

$ sed '/^../{h;s/^.\(.\{2,5\}\).*/\1/;s/./*/g;G;s/\(.*\)\n\(.\).\{2,5\}\(.*\)/\2\1\3/}' urfile

改正:

$ head urfile
123456
1234567
12345
12
123456789
1
$ sed '/^../{h;s/^.\(.\{1,5\}\).*/\1/;s/./*/g;G;s/\(.*\)\n\(.\).\{1,5\}/\2\1/}' urfile
1*****
1*****7
1****
1*
1*****789
1

[ 本帖最后由 blackold 于 2008-7-17 15:13 编辑 ]



您对本贴的看法:鲜花[1] 臭蛋[0]

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-16
帖子:5023
精华:1

可用积分:2384 (小富即安)
信誉积分:100
专家积分:45 (本版:5)
空间积分:1
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


6楼 发表于 2008-7-17 14:12 
把{1}{5}{6}数字改一下就可扩展

sed -r '/.{6}/bb
:a
s/(.\**)[^*]/\1\*/
ta
b
:b
/^.{1}\*{5}/! {
s/(.\**)[^*]/\1\*/
tb
}'

以下为测试:

{ echo '123';echo '1234';echo '1234567';echo '12345678';echo '1*34';echo '1*3*5678';} | sed -r '/.{6}/bb
:a
s/(.\**)[^*]/\1\*/
ta
b
:b
/^.\*{1}{5}/! {
s/(.\**)[^*]/\1\*/
tb
}';
1**
1***
1*****7
1*****78
1***
1*****78

[ 本帖最后由 cjaizss 于 2008-7-17 15:52 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
可可熊
光明使者




UID:498669
注册:2006-12-1
最后登录: 2008-09-28
帖子:814
精华:0

可用积分:4681 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:西安
状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2008-7-17 14:13 
回复 #1 Shell_HAT 的帖子

还得用sed啊。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
merlin852   帅哥
精灵王




UID:551382
注册:2007-4-13
最后登录: 2008-10-16
帖子:354
精华:0

可用积分:1708 (家境小康)
信誉积分:100
专家积分:10 (本版:10)
空间积分:804
推广积分:0

状态:...在线...

[个人空间] [短信] [博客]


8楼 发表于 2008-7-17 14:15 
echo 123456789|sed -r 's/(.)(.{5})(.*)/\1*****\3/'



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 cjaizss   帅哥
版主-法师



UID:272747
注册:2005-5-26
最后登录: 2008-10-16
帖子:5023
精华:1

可用积分:2384 (小富即安)
信誉积分:100
专家积分:45 (本版:5)
空间积分:1
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


9楼 发表于 2008-7-17 14:17 


QUOTE:
原帖由 merlin852 于 2008-7-17 14:15 发表
echo 123456789|sed -r 's/(.)(.{5})(.*)/\1*****\3/'

你这个脚本不对的
# echo 1234|sed -r 's/(.)(.{5})(.*)/\1*****\3/'
1234



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 net_robber   帅哥 (迷茫的羔羊)
版主-精灵使
堕落的鬼魂




UID:159572
注册:2004-5-20
最后登录: 2008-10-16
帖子:3503
精华:4

可用积分:5257 (富足长乐)
信誉积分:99
专家积分:10 (本版:0)
空间积分:0
推广积分:8

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2008-7-17 14:24 
还有-r参数,哈哈,谢谢



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________



新领域全方位传媒。
打破以往传统传媒单一方式让虚拟与现实完美结合。
引领新一代 《立体网络传媒文化》 。
异度圣洁诚挚的邀请您参加到我们的《彗星系统》中,与我们一起拥抱明天!
有兴趣的请联系我ZhangQuan@TimeCtrl.net




积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » 论坛 » Shell »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.075912 second(s), 4 queries , Gzip enabled