Chinaunix

标题: 老贴新问 [打印本页]

作者: hityelin    时间: 2004-12-20 17:55
标题: 老贴新问
在有rev命令的系统上,revstring=`echo bottle|rev`便可以得到你想要的.
在没有rev命令的系统上,可以用awk实现一个放在/usr/bin下:
#!/usr/bin/awk -f
################################################################
# Description : duplicate rev in awk
################################################################
{
revline = ""
for (i=1;i<=length;i++)
{
revline = substr($0,i,1) revline
}
}
END{print revline}


这是个精华区的老贴,里面有些地方不是很明白

在for语句中的length是谁的?难道是默认的$0的么?

还有循环中的那个用法:
revline = substr($0,i,1) revline


这个是什么意思?

谢谢!
作者: 寂寞烈火    时间: 2004-12-20 18:27
标题: 老贴新问
这些都是AWK内制的函数,精华区里有AWK的比较详细的贴子,吼吼,看一看,你就明白 啦!
在精华区里有个类似的:

  1. awk '{l = ""; for (i = length($0); i > 0; i--) printf "%c", substr($0, i, 1); print "";}'
复制代码

作者: hityelin    时间: 2004-12-20 18:49
标题: 老贴新问
关于内置的函数我可以理解

但是内置函数的length是有参数的,但是上面的没有

还有一点就是revline=。。。。revline,这个好像直接在做字符串连接似的

其实到现在我一直觉得shell的东西可变的东西太多,一个问题很多中解法,但是呢,这些解法中呢,有些用法在书上是找不到的,回答问题的大侠们,也就是给出问题的答案,不说为什么要这么做!那么做为什么不行!这些给我们这些新手留了太多的问题!

其实能在这个版面看到各位大侠热情的解答问题,很高兴,但是如果在多那么一点点,就perfect了

小弟谢过!
作者: 寂寞烈火    时间: 2004-12-20 18:56
标题: 老贴新问
[quote]原帖由 "hityelin"]NY[/quote 发表:

NY   
作者: hityelin    时间: 2004-12-20 18:58
标题: 老贴新问
那个NY是没有输入好,机子出了点问题,不好意思

没有什么恶意!
作者: 寂寞烈火    时间: 2004-12-20 19:05
标题: 老贴新问
原帖由 "hityelin" 发表:
那个NY是没有输入好,机子出了点问题,不好意思

没有什么恶意!

http://bbs.chinaunix.net/forum/viewtopic.php?t=448687&show_type=new
作者: hityelin    时间: 2004-12-20 19:11
标题: 老贴新问


烈火兄,上面的文章我看过了,那个和linux和unix编程指南是一样
那本书我也有

那个文章没有我上面提到的问题,所以我才多此一问的。
作者: bitbull    时间: 2004-12-21 18:03
标题: 老贴新问
revline = substr($0,i,1) revline

是把substr到的东西堆到revline变量里

书里有,呵呵,在sed & awk里的一个例子中有这样做过




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2