Chinaunix

标题: 请教awk如何添加一个新域的字段, [打印本页]

作者: main_bo    时间: 2008-09-05 10:53
标题: 请教awk如何添加一个新域的字段,
命令如下 sar -u 1 1|awk  -F 'NR==5 {print $0;}'

  得出的结果     10:08:03       3       1       0      96


    我希望在第一个域和第二个域之间  加入 all     

    这样  10:08:03   all    3       1       0      96

     请教如何实现
作者: 无声无息    时间: 2008-09-05 11:00
awk '{$1=$1" all";print}'
作者: li_haigang    时间: 2008-09-05 11:18
awk 'BEGIN{OFS="\t"}{$1=$1"\tall";print $0}' urfile
作者: leession    时间: 2008-09-05 11:21
楼上正解!
还有一点
为什么 楼主要NR==5 ???

只想打印第5条记录吗?

[ 本帖最后由 leession 于 2008-9-5 11:23 编辑 ]
作者: 爱知    时间: 2008-09-05 11:26
sar -u 1 1|sed -n '5s/[^ \t]*/&\tall/p'

[ 本帖最后由 爱知 于 2008-9-5 11:29 编辑 ]
作者: main_bo    时间: 2008-09-05 11:41
原帖由 leession 于 2008-9-5 11:21 发表
楼上正解!
还有一点
为什么 楼主要NR==5 ???

只想打印第5条记录吗?




   对,我是要只要第5条记录,,


     可惜楼上的兄弟们目前为之,没有一个是正确的,,

   
   awk 添加一个新域没想到这么难,,那些计算的功能倒是很强大,
作者: main_bo    时间: 2008-09-05 11:48
原帖由 li_haigang 于 2008-9-5 11:18 发表
awk 'BEGIN{OFS="\t"}{$1=$1"\tall";print $0}' urfile




   我也是这么用的啊   sar  -u 1 1|awk 'NR==5 BEGIN{OFS="\t"}{$1=$1"\tall",print $0}';


   但是不正确啊     
                            awk:语法错误 在第 1 行附近
                   awk:漏出 在第 1 行附近


   错在那里呢???
作者: liaosnet    时间: 2008-09-05 11:50
原帖由 main_bo 于 2008-9-5 11:41 发表




   对,我是要只要第5条记录,,


     可惜楼上的兄弟们目前为之,没有一个是正确的,,

   
   awk 添加一个新域没想到这么难,,那些计算的功能倒是很强大,


似乎是你不怎么明白吧~~

2楼的就已经可以了..

[ 本帖最后由 liaosnet 于 2008-9-5 11:54 编辑 ]
作者: r2007    时间: 2008-09-05 11:54
原帖由 main_bo 于 2008-9-5 11:48 发表




   我也是这么用的啊   sar  -u 1 1|awk 'NR==5 BEGIN{OFS="\t"}{$1=$1"\tall",print $0}';


   但是不正确啊     
                            awk:语法错误 在第 1 行附近
                  ...

awk语法不对,可以参考man awk,了解一下基本的awk语句都包含哪些部分。
作者: main_bo    时间: 2008-09-05 11:56
原帖由 无声无息 于 2008-9-5 11:00 发表
awk '{$1=$1" all";print}'




   大哥  你给的这个命令 sar -u 1 1|awk  -F 'NR==5 {print $1,$2="all",$3,$4,$5,$6}'

    输出的是  11:51:05       0       2       0      98 all

     我希望是   11:51:05   all     0       2       0      98


                  怎样能把域的位置调整一下呢
作者: waker    时间: 2008-09-05 12:02
原帖由 main_bo 于 2008-9-5 11:56 发表




   大哥  你给的这个命令 sar -u 1 1|awk  -F 'NR==5 {print $1,$2="all",$3,$4,$5,$6}'

    输出的是  11:51:05       0       2       0      98 all

     我希望是   11:51:05   all     0    ...



把你的测试过程贴出来看看
作者: liaosnet    时间: 2008-09-05 12:20
原帖由 main_bo 于 2008-9-5 11:56 发表




   大哥  你给的这个命令 sar -u 1 1|awk  -F 'NR==5 {print $1,$2="all",$3,$4,$5,$6}'

    输出的是  11:51:05       0       2       0      98 all

     我希望是   11:51:05   all     0    ...


$1=$1" all" 跟你这有本质区别.....
作者: blackold    时间: 2008-09-05 12:27
LZ总是把别人的命令改了,之后出了问题,之后说“都不行”。
作者: leession    时间: 2008-09-05 12:31
你试试把-F去掉

ls -ltr |awk 'NR==5 {$1=$1" all";print}'

作者: waker    时间: 2008-09-05 12:31
标题: 回复 #13 blackold 的帖子
楼主才发了5帖,你不能三岁看老吧
作者: blackold    时间: 2008-09-05 12:42
原帖由 waker 于 2008-9-5 12:31 发表
楼主才发了5帖,你不能三岁看老吧



版主说的是。

看到LZ几个贴都改了LS的命令,所以我的话有点偏激了。

Sorry!
作者: main_bo    时间: 2008-09-05 12:43
标题: 谢谢了楼上的兄弟们,是我语法还不熟悉,
已经可以用了

   汗一个啊,,




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