Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3028477
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-05-14 15:46:19

文本:

1a 2b 3c 4d 5e
1a 2b 3c 4d 5e

结果:

5e 4d 3c 2b 1a
5e 4d 3c 2b 1a

 

 

  1. awk '{for(i=NF;i>1;i--)printf ("%s ",$i);print $1}' file

[解析
  这是最常用的命令,利用NF的降序输出,把最后一个域作为第一个输出,然后自减,最后输出$1,这里要注意的地方是printf,不能用print,因为print默认的ORS是换行,最后用print $1单独输出,既换行,又不会多个空格。

 

  1. awk '{for(i=1;i<=NF/2;i++){t=$i;$i=$(NF+1-i);$(NF+1-i)=t}}1' file
[解析]
  这是效率最高的一种办法,非常科学的算法,相当于把$1和$5对换,$2和$4对换。
for(i=1;i<=2.5;i++){t=$1;$1=$5;$5=t}
for(i=2;i<=2.5;i++){t=$2;$2=$4;$4=t}
这样就完成了$1和$5,$2和$4的对调。谢谢黑哥的指点。
阅读(5565) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

bikong04112011-12-02 18:58:23

学习了