LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1069|回复: 5

如何用awk来实现rev[已解决]

[复制链接]
发表于 2004-4-29 13:24:54 | 显示全部楼层 |阅读模式
linux下有个rev命令,我想用awk来实现,问题出来了:

  1. #如果字符是连续的这样:
  2. /home/javalee#\
  3. >echo 12345|awk '{gsub(/./,"& ")}{for(i=NF;i>=1;i--)printf $i}'
  4. 54321
  5. #如果字符中有空格,:(
  6. /home/javalee#
  7. /home/javalee#echo "123 45"|\
  8. >awk '{gsub(/./,"& ")}{for(i=NF;i>=1;i--)printf $i}'
  9. 54321
  10. #怎么才能像rev这样呢?
  11. /home/javalee#echo "123 45"|rev
  12. 54 321
  13. /home/javalee#
复制代码

awk有没有reverse这样的函数呢? :thank
发表于 2004-4-29 13:36:37 | 显示全部楼层
在awk里调用rev命令即可。
术业有专攻,这才符合UNIX的工具哲学。
 楼主| 发表于 2004-4-29 13:43:45 | 显示全部楼层
最初由 home_king 发表
在awk里调用rev命令即可。
术业有专攻,这才符合UNIX的工具哲学。

呵呵,这个我知道, 我就是想...多练练嘛 ;)
发表于 2004-4-29 13:46:56 | 显示全部楼层
awk没有reverse函数。
如果真的要实现rev的功能,则把FS设置为""(空字符串),输出$NF~$1即可。
发表于 2004-4-29 13:51:18 | 显示全部楼层
echo "123 45" | awk 'BEGIN{FS=""}{for(i=NF;i>=1;i--)printf $i}END{printf "\n"}'
发表于 2006-5-17 20:14:16 | 显示全部楼层
[20:10:22@~]$ echo 12 34 5 | awk 'BEGIN{FS=""}{for(i=NF;i>=1;i--)print $i}'
5

4
3

2
1
[20:10:44@~]$ echo 12 34 5 | awk 'BEGIN{FS="";ORS=""}{for(i=NF;i>=1;i--)print $i}END{print "\n"}'
5 43 21
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表