当前位置:  技术问答>linux和unix

问一个关于awk的问题哈

    来源: 互联网  发布时间:2017-05-21

    本文导语:  2test.txt内容如下: Linux 3.11.0-12-generic (astlubuntudell)        04/11/2014      _x86_64_        (4 CPU) Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await...

2test.txt内容如下:
Linux 3.11.0-12-generic (astlubuntudell)        04/11/2014      _x86_64_        (4 CPU)


Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdd             481.18     0.00  191.82    0.00     2.84     0.00    30.36     0.03    0.17    0.17    0.12   0.13   2.51
sde             481.17     0.00  191.90    0.00     2.84     0.00    30.35     0.03    0.16    0.16    0.12   0.13   2.47


执行
awk -F '[ ]+' '/Device*/ {print $1,$4} /sd*/ {print $1,$4}' 2test.txt

输出如下:
Linux   04/11/2014
Device: r/s
Device: r/s
sdd 191.82
sde 191.90

Q1:第一行应该不匹配的,怎么也输出了$1和$4?
Q2:Device那行怎么输出了两次?

|
跟你用的sd*有关系 我测试过
但是原因说不出来,如二楼所说,遇到这种情况,换正则表达式吧。


[root@ tmp]# awk  -F'[ ]+'  '/Device.*/{print $1,$4}  /sd.*/  {print $1,$4}' 1.txt 
Device: r/s
sdd 191.82
sde 191.90


上面这种正则表达式和楼上也一样,也谢谢楼上。

表示的意思都是  ,文本中含有Device,后面跟上任意多个任意字符的行以及 文本中含有sd,后面跟上任意多个任意字符的行.

这样表达更精确,跟上 .  后

|
sd* 表示 s 后面跟0个或多个d,所以只要一行中有s,就会匹配。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • awk里可以嵌套awk吗?
  • 怎样让awk输出到中途退出awk?
  • 请问一下AWK怎么样在一行文本中的第14个字段的最后面加一个空格符呢,不知道AWK的写法该怎么写,在线求教,谢谢了!!!
  • 运行awk脚本文件碰到:-bash:student_tot.awk:command not found
  • awk能改变变量的值么?
  • awk程序中使用shell的变量
  • 新手请教一段AWK代码,报错。
  • awk如何删除一个文件?
  • awk在shell script中
  • awk 匹配字符串
  • awk参数中文件名是变量的情况
  • awk中如何带入变量
  • shell awk之后对某一列进行求和
  • AWK
  • awk中如何读取shell变量?
  • 用awk如何在当前目录下所有文件中搜索字符串
  • 问一个关于shell中awk的使用
  • awk脚本执行不了
  • 如何用awk统计数据
  • gawk与nawk 以及awk的区别和怎么使用,有点不是很明白请高手赐教!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,