[chengmo@centos5 shell]$ awk "NR%2==1{next}{print NR,$0;}" text.txt 2 b 4 d 当记录行号除以2余 1,就跳过当前行。下面的print NR,$0也不会执行。 下一行开始,程序有开始判断NR%2 值。这个时候记录行号是:2 ,就会执行下面语句块:"print NR,$0"
awk next使用实例:
复制代码代码如下: 要求: 文件:text.txt 格式: web01[192.168.2.100] httpdok tomcat ok sendmail ok web02[192.168.2.101] httpdok postfix ok web03[192.168.2.102] mysqldok httpd ok
需要通过awk将输出格式变成: web01[192.168.2.100]: httpdok web01[192.168.2.100]: tomcat ok web01[192.168.2.100]: sendmail ok web02[192.168.2.101]: httpdok web02[192.168.2.101]: postfix ok web03[192.168.2.102]: mysqldok web03[192.168.2.102]: httpd ok
分析: 分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行。 [chengmo@centos5 shell]$ awk "/^web/{T=$0;next;}{print T": "$0;}" test.txt web01[192.168.2.100]: httpdok web01[192.168.2.100]: tomcat ok web01[192.168.2.100]: sendmail ok web02[192.168.2.101]: httpdok web02[192.168.2.101]: postfix ok web03[192.168.2.102]: mysqldok web03[192.168.2.102]: httpd ok