linux – 如何从模式中打印第n行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何从模式中打印第n行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1600字,纯文字阅读大概需要3分钟。
内容图文
![linux – 如何从模式中打印第n行?](/upload/InfoBanner/zyjiaocheng/967/3844ac91b8d04094959013628d3cbe80.jpg)
我正在尝试制作一个脚本,以简短格式汇总包含以下日志的文件.
日志片段:
$cat input.txt
ffffff 1301 2012-08-29T03:13:33 clr crit
Some serious problem
cccc dddddd eeeeee
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Some serious problem in system.
ffffff 1302 2012-08-29T03:13:33 set min
Some serious problem
cccc dddddd eeeeee
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Some minor problem in system.
期望的输出:
2012-08-29T03:13:33 clr crit Some serious problem in system.
2012-08-29T03:13:33 set min Some minor problem in system.
我尝试下面的approch:
$cat input.txt | grep -iE "set|upd|clr" | awk '{print $3,$4,$5}' >file1
12-08-29T03:13:33 clr crit
12-08-29T03:13:33 set min
下面的命令从模式“T”给出第5行,但问题在于所需的文本行,在某些情况下,它在第5行,在某些情况下,它在第4行.
$awk '/T/ { show[NR+4]++ } show[NR]' input.txt >file2
$paste file1 file2
查询:
在某些情况下,它在第5行,在某些情况下,它在第4行.我怎样才能确保找到确切的文字.如果可能,请告诉我.
解决方法:
解决此问题的正确方法是将awks Record Separator设置为空字符串,以便awk知道您的输入记录由空行分隔:
$awk -v RS= -F'\n' '{split($1,a,/ +/); print a[3],a[4],a[5],$NF}' file
2012-08-29T03:13:33 clr crit Some serious problem in system.
2012-08-29T03:13:33 set min Some minor problem in system.
这样,如果/当你想要在未来打印记录的其他部分或打印记录数量的计数或仅打印基于某些关键字段或其他任何内容的唯一记录时,这是非常微不足道的,因为awk知道并且正在操作记录.
内容总结
以上是互联网集市为您收集整理的linux – 如何从模式中打印第n行?全部内容,希望文章能够帮你解决linux – 如何从模式中打印第n行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。