美文网首页
41 awk (三)

41 awk (三)

作者: StarShift | 来源:发表于2016-10-30 03:21 被阅读49次

awk 高级输入输出

读取下一条记录
root@ubuntu:~# awk 'NR%2==1{next}{print NR,$0;}' cats.txt 
2   my cat's name is betty
4   my dog's name is frank
6   my fish's name is george
8   my goat's name is adam

分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行:

cat web.txt 
web01[192.168.2.100]
 httpd ok 
 tomcat ok 
 sendmail ok 
web02[192.168.2.101] 
 httpd ok 
 postfix ok 
web03[192.168.2.102] 
 mysqld ok 
 httpd ok
root@ubuntu:~# awk '/^web/{T=$0;next;}{print T":\t"$0;}' web.txt 
web01[192.168.2.100]:    httpd ok 
web01[192.168.2.100]:    tomcat ok 
web01[192.168.2.100]:    sendmail ok 
web02[192.168.2.101] :   httpd ok 
web02[192.168.2.101] :   postfix ok 
web03[192.168.2.102] :   mysqld ok 
web03[192.168.2.102] :   httpd ok
getline 函数

awk getline用法:输出重定向需用到getline函数。getline从标准输入、管道或者当前正在处理的文件之外的其他输入文件获得输入。它负责从输入获得下一行的内容,并给NF,NR和FNR等内建变量赋值。如果得到一条记录,getline函数返回1,如果到达文件的末尾就返回0,如果出现错误,例如打开文件失败,就返回-1。

  • 当其左右无重定向符|或<时:getline作用于当前文件,读入当前文件的第一行给其后跟的变量var或$0(无变量),应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
  • 当其左右有重定向符|或<时:getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
root@ubuntu:~# awk 'BEGIN{ "date" | getline out; print out }' test
Sat Oct 29 12:10:45 PDT 2016
root@ubuntu:~# awk 'BEGIN{ "date" | getline out; split(out,mon); print mon[2] }' test 
Oct
root@ubuntu:~# awk 'BEGIN{ while( "ls" | getline) print }' 
1
1n
1.txt
cats.txt
herpets.txt
html.txt
my.txt
nohup.out
pets.txt
pet.txt
web.txt

相关文章

  • 41 awk (三)

    awk 高级输入输出 读取下一条记录 分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行:...

  • 2019-06-19

    1. awk三剑客命令概述 # which awk--------查看awk在哪个目录下 显示: /u...

  • Linux awk 命令详解(一)

    目录 一、awk简介及常见用法二、awk的过滤的机制BEGIN{ }END{ }指令三、awk数值/字符串比较/逻...

  • shell系列9-awk

    一. awk概述 1.1 awk的前世今生 awk名字的由来:分别取三个创始人Ah,Weiberger,Kerni...

  • 19-三剑客之awk补充

    创建环境: 一、awk的参数: -F 指定分隔符-v 修改或创建awk内置变量 二、内置变量 三、过滤(awk中什...

  • note_17.3_awk

    GNU awk: 文本处理三工具:grep, sed, awk grep, egrep, fgrep:文本过滤工具...

  • Linux13_awk命令详解

    awk与sed对应sed处理文本的行awk处理列来源,awk三个开发者的姓的第一个字母awk语法格式 其中patt...

  • 2019-07-25

    操作系统命令三剑客-awk 一: 三剑客命令awk概述gawk : pattern scanning and pr...

  • awk

    awk的简介和功能 awk: Linux 文本处理三剑客:grep、sed和awk。其中grep是一种文本过滤工具...

  • Linux 学习笔记(十四):Linux 正则表达式基础

    grep 命令 作为linux中最为常用的三大文本(awk(Linux awk教程),sed(Linux sed教...

网友评论

      本文标题:41 awk (三)

      本文链接:https://www.haomeiwen.com/subject/nroyuttx.html