免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7636 | 回复: 25

献给初学shell的朋友!!!(1)  关闭 [复制链接]

论坛徽章:
0
发表于 2004-05-06 19:30 |显示全部楼层
学习了shell已经有一个月了,在这里我谈谈我对shell编程思想的理解,如有出入的地方还请高手多多指教(五一无聊手闲):
(1)化整为散的思想:
我想"化整为散"对与每个人已经不在陌生了,在这里我略去了该思想的定义,直接举例如下:
   
   
例1:
   $ cat hello
   hellohellohello
现在我想得到的结果是:
    hello
    hello
    hello
可以实现该功能的代码如下:
    sed 's/\(hello\)/@\1/g' hello | tr "@" "\n"
上面的编程思路是:
    让hello与hello之间用特殊字符(在这里我用的是@)进行连接,然后在把该特殊字符(@)用tr命令转化为"\n"(换行符).
  
例2: 有一段文本其内容如下:
     dskjsklakksdkdjskadsadksdjlksjadds
    现在我要该文本按照ascii的顺序进行排列,既输出的结果为:
    aaaaddddddddjjjjkkkkkkkkllssssssss
shell代码如下:
   $ echo dskjsklakksdkdjskadsadksdjlksjadds | sed 's/\(.\)/\1\ /g' | tr " " "\n" | sort | tr -d "\n"
该段程序解释为:
    先把该文本的字符与字符之间用"空格"分开(sed 's/\(.\)/\1\ /g'),然后把空格
变为"\n"(tr " " "\n",再用sort命令把各行进行排序,最后再用tr命令把输出变为一行.该段程序灵活的应用了"化整为散,化散为整"的思想.

例3:
    文本内容如下:
     abcd\nefgh\nijklm\nn
    输出结果:
     abcd
        efgh
        ijklm
        n
  实现该功能的代码如下:
     cat filename | sed 's/\\n/@/g' | tr "@" "\n"
   该段程序解释为:
     首先通过cat命令显示filename文本,然后通过管道再用sed命令把"\n"(这里的\n为一般的普通字符)转换为"@", 最后通过tr命令把"@"字符转换为"\n"(换行) 。

请朋友们给个意见。如果要下面的文章我在继续。谢谢!!!!

论坛徽章:
0
发表于 2004-05-06 21:59 |显示全部楼层

献给初学shell的朋友!!!(1)

好,不错!!写下去,支持ing..

论坛徽章:
0
发表于 2004-05-07 01:56 |显示全部楼层

献给初学shell的朋友!!!(1)

支持,谢谢

论坛徽章:
0
发表于 2004-05-07 10:11 |显示全部楼层

献给初学shell的朋友!!!(1)

真不错!

论坛徽章:
0
发表于 2004-05-07 12:01 |显示全部楼层

献给初学shell的朋友!!!(1)

tr用的好!

论坛徽章:
0
发表于 2004-05-07 13:14 |显示全部楼层

献给初学shell的朋友!!!(1)

bjmm其实tr命令是您叫我的。
再次感谢!!!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-05-07 18:22 |显示全部楼层

献给初学shell的朋友!!!(1)

支持一下,希望能继续下去!
nickey_ly 该用户已被删除
发表于 2004-05-07 22:03 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2004-05-07 23:01 |显示全部楼层

献给初学shell的朋友!!!(1)

非常支持!能否开个专题!

论坛徽章:
0
发表于 2004-05-08 08:05 |显示全部楼层

献给初学shell的朋友!!!(1)

谢谢了, 有列子和解说引导, 马上就懂了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP