免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4410 | 回复: 15
打印 上一主题 下一主题

[SCO UNIX] 求助 Sed问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-22 23:43 |只看该作者 |倒序浏览
有一文件内容如下:
0100010
1110011
1101010
1010101
1111110

我想用空格替换0,根据1所在位置分别用{abcdefg}替换对应位置的1,能用sed命令实现吗,越简单越好。谢谢各位大侠,有谁能帮我解决这个难题。

论坛徽章:
0
2 [报告]
发表于 2008-01-24 16:55 |只看该作者
你的系统如果是SCO506以上版本的话可以试试perl


open(F,"file");
while(<F>){
           for($n=0;$n<=6;$n++){
                 $a=substr($_,$n,1);
                 if($a==1){
                       if($n==0){
                            print "a" }elsif($n==1){
                            print "b" }elsif($n==2){
                            print "c" }elsif($n==3){
                            print "d" }elsif($n==4){
                            print "e" }elsif($n==5){
                            print "f" }elsif($n==6){
                            print "g"
                      }
                 }else{ print " " }
             }
             print "\n"
}
close(F);


结果:
b   f
abc  fg
ab d f
a c e g
abcdef

[ 本帖最后由 xiao_lin 于 2008-1-27 10:11 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-01-25 20:01 |只看该作者
UNIX 是5.x我也搞不清楚,关健是perl在Unix下怎么用,我平时只用shell,请指教。

论坛徽章:
0
4 [报告]
发表于 2008-01-27 10:11 |只看该作者
例如将脚本保存为文件file与你的数据文件在同一个目录下,执行:perl file就可以了。如果没有perl那只能从网上下载后安装上,网上多的是

论坛徽章:
0
5 [报告]
发表于 2008-01-27 20:38 |只看该作者
谢谢xiao_lin大侠

论坛徽章:
0
6 [报告]
发表于 2008-02-03 22:14 |只看该作者
sed 's/0/ /g'

tr 0 " "

论坛徽章:
0
7 [报告]
发表于 2008-02-04 19:13 |只看该作者
原帖由 zhangshebao 于 2008-2-3 22:14 发表
sed 's/0/ /g'

tr 0 " "

关健是第二个条件,根据1所在位置用{abcdefg}去替换。我的办法是sed 's/\(1\)\([01][01][01][01][01][01]\)/a\2/g' 但要写8遍才能全能替换,最好能像xiao_lin大侠的程序一样简洁就好了。

论坛徽章:
0
8 [报告]
发表于 2008-02-12 23:39 |只看该作者

回复 #1 cbnewer 的帖子

用sed应该不能实现分别替换吧,用awk应该是可以的。

论坛徽章:
0
9 [报告]
发表于 2008-02-14 20:13 |只看该作者

回复 #8 xm1984 的帖子

awk怎么写

论坛徽章:
0
10 [报告]
发表于 2008-02-14 21:08 |只看该作者
bash-3.2$ echo "0100010
1110011
1101010
1010101
"|awk '
{
for (i=1;i<length($0);i++){
   printf("%c",substr($0,i,1)=="0"?32:96+i)
};printf( "\n")
}'
b   f
abc  f
ab d f
a c e
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP