免费注册 查看新帖 |

Chinaunix

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

用shell写的rev,以弥补某些没有rev命令的OS之缺憾  关闭 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-07 23:11 |显示全部楼层 |倒序浏览
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
请大家测试修正!
  1. #!/bin/sh
  2. #ScriptName:rev
  3. a="$1"
  4. i=0
  5. s=""
  6. l=`expr length "${a}"`
  7. while [ $i -lt $l ]
  8. do
  9.     i=`expr $i + 1`
  10.     s="`expr substr "${a}" $i 1`""${s}"
  11. done
  12. echo "${s}"
复制代码

如果认为还行的话可以将它命令为rev放入/bin或/usr/bin下,作为系统命令使用
测试
  1. # rev 1234567890
  2. 0987654321
  3. # rev "12 34 56 78 90"
  4. 09 87 65 43 21
  5. # rev "a b c d e f g h ijk lmn o p q rst uvwxyz"
  6. zyxwvu tsr q p o nml kji h g f e d c b a
  7. # rev "abcdefghijklmnopqrstuvwxyz"
  8. zyxwvutsrqponmlkjihgfedcba

  9. cat a
  10. 1234567890
  11. abcdefghij

  12. while read line
  13. > do
  14. > echo ${line} | xargs rev
  15. > done <a

  16. 0987654321
  17. jihgfedcba
复制代码

说明:
1.当需要反转的串中含有空格时,请用引号括起来。
2.由于是shell写成,在管道中需要用xargs调用,并且不能批处理

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-12-07 23:50 |显示全部楼层

用shell写的rev,以弥补某些没有rev命令的OS之缺憾

sed 版的,更简单些:
  1. #!/bin/sh
  2. #ScriptName:rev
  3. echo "$1"  | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
复制代码

用法和注意事项同上。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-12-08 07:16 |显示全部楼层

用shell写的rev,以弥补某些没有rev命令的OS之缺憾


顶一下!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-12-08 15:11 |显示全部楼层

用shell写的rev,以弥补某些没有rev命令的OS之缺憾

好多哟!
大家加油呀!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2003-12-12 07:33 |显示全部楼层

用shell写的rev,以弥补某些没有rev命令的OS之缺憾

[quote]原帖由 "don"]能举几个要用到rev的例子吗?[/quote 发表:
嗯?前面不是已经列举了不少例子了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP