Chinaunix
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
[打印本页]
作者:
admirer
时间:
2003-12-07 23:11
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
请大家测试修正!
#!/bin/sh
#ScriptName:rev
a="$1"
i=0
s=""
l=`expr length "${a}"`
while [ $i -lt $l ]
do
i=`expr $i + 1`
s="`expr substr "${a}" $i 1`""${s}"
done
echo "${s}"
复制代码
如果认为还行的话可以将它命令为rev放入/bin或/usr/bin下,作为系统命令使用
测试
# rev 1234567890
0987654321
# rev "12 34 56 78 90"
09 87 65 43 21
# rev "a b c d e f g h ijk lmn o p q rst uvwxyz"
zyxwvu tsr q p o nml kji h g f e d c b a
# rev "abcdefghijklmnopqrstuvwxyz"
zyxwvutsrqponmlkjihgfedcba
cat a
1234567890
abcdefghij
while read line
> do
> echo ${line} | xargs rev
> done <a
0987654321
jihgfedcba
复制代码
说明:
1.当需要反转的串中含有空格时,请用引号括起来。
2.由于是shell写成,在管道中需要用xargs调用,并且不能批处理
作者:
bjgirl
时间:
2003-12-07 23:23
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
弓虽
作者:
admirer
时间:
2003-12-07 23:50
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
sed 版的,更简单些:
#!/bin/sh
#ScriptName:rev
echo "$1" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
复制代码
用法和注意事项同上。
作者:
bjgirl
时间:
2003-12-08 00:15
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
来个cut版本的rev~~
#!/bin/ksh
len=${#1}
while ((len!=0))
do
echo $1|cut -b$len-$len
((len-=1))
done|tr -d '\n';echo
复制代码
测试:
$rev abcde12345
54321edcba
作者:
網中人
时间:
2003-12-08 01:38
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
我也來段 bash 版的:
#!/bin/bash
IFS=
for ((i=$((${#1}-1));i>=0;i--))
do echo -n ${1:$i:1}; done
echo
复制代码
作者:
admirer
时间:
2003-12-08 07:16
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
顶一下!
作者:
c1l2d3
时间:
2003-12-08 08:18
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
来一个笨版的:
cat rev
IFS=;
m=$1
k=`expr length $m`
while [ "1" -le "$k" ]
do
s=`echo $m | cut -c$k-$k`
echo $s"\c"
done
rev 1234567890
0987654321
作者:
飞灰橙
时间:
2003-12-08 09:52
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
再弄个偷懒的perl版
#!/usr/bin/perl
print reverse(split("", $ARGV[0]));
复制代码
作者:
c1l2d3
时间:
2003-12-08 10:04
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
[quote]
原帖由 "飞灰橙"][/quote 发表:
楼上飞灰兄:给一个sco下的perl安装,可以吗?多谢
作者:
飞灰橙
时间:
2003-12-08 10:29
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
sry, 偶也没有:(
作者:
bjgirl
时间:
2003-12-08 10:47
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
[quote]
原帖由 "飞灰橙"][/quote 发表:
更简单的perl版本的rev
#!perl -w
print reverse@ARGV;
复制代码
作者:
飞灰橙
时间:
2003-12-08 10:55
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
[quote]
原帖由 "bjgirl"]更简单的perl版本的rev[/quote 发表:
哈哈,逮到bug罗
作者:
bjgirl
时间:
2003-12-08 10:58
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
原帖由 "飞灰橙" 发表:
哈哈,逮到bug罗
作者:
飞灰橙
时间:
2003-12-08 11:01
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
rev 1 2 3 4 5
54321
这么写就不行了
rev 12345
12345
作者:
bjgirl
时间:
2003-12-08 14:43
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
原帖由 "飞灰橙" 发表:
哈哈,逮到bug罗
谢谢飞哥哥~~
,不好意思~~
作者:
admirer
时间:
2003-12-08 15:11
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
好多哟!
大家加油呀!
作者:
bjgirl
时间:
2003-12-08 15:13
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
来个sed版本的tac!
$cat _tac
#!/bin/ksh
n=$(cat $1|wc -l)
while ((n!=0))
do
sed -n ${n}p $1
((n-=1))
done
复制代码
作者:
ohwww
时间:
2003-12-08 20:35
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
学习啊,在这些强人面前我只能学习了
作者:
don
时间:
2003-12-12 02:31
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
能举几个要用到rev的例子吗?
作者:
admirer
时间:
2003-12-12 07:33
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
[quote]
原帖由 "don"]能举几个要用到rev的例子吗?[/quote 发表:
嗯?前面不是已经列举了不少例子了?
作者:
@龙井茶
时间:
2004-01-06 12:34
标题:
用shell写的rev,以弥补某些没有rev命令的OS之缺憾
perl 可以去www.perl.com下载
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2