我要把最后那一列移动最前面,有没有完美的解决办法,试了sed和awk好像都不能完美解决!求大神帮忙看看

解决方案 »

  1.   


    输出  | awk '{printf "%15-s %100-s\n",$NF,$0}' | sed -r 's/[[:blank:]]+$//' | sed -r 's/(^.*)([[:blank:]]+)(.*$)/\1/'有点复杂,看看行不行(前提是最后一列没有空值,有空值会有问题)
    1)awk '{printf "%15-s %100-s\n",$NF,$0}'把每行最后一个字段在第一列再输出一次(最后一列有空值,那就不行了;   本来准备用awk '{$NF="";print}'替换最后一个字段为空来去掉最后一列,但是发现这样,格式就乱了,不好对齐,就用了两个sed处理)
    2)sed -r 's/[[:blank:]]+$//'去掉行尾的空格
    3)sed -r 's/(^.*)([[:blank:]]+)(.*$)/\1/'分组之后,去掉最后一列和最后一列前面空格
      

  2.   

    嗯,非常感谢,刚试了一下,你的方法是可以的!
    但是请问[[:blank:]]+和[\s]+这两个有什么区别吗?我换了[\s]+以后不一样,很大变化