菜鸟笔记
提升您的技术认知

awk 高级输入输出

阅读 : 145
读取下一条记录:next 语句

awk中next语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。而进行下一行匹配。net语句一般用于多行合并:

awk 'NR%2==1{next}{print NR,$0;}' text.txt
// 说明:当记录行号除以2余1,就跳过当前行。
// 下面的print NR,$0也不会执行。
// 下一行开始,程序有开始判断NR%2值。
// 这个时候记录行号是2,就会执行下面语句块print NR,$0;
读取一行记录:getline 语句

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

语法格式:getline var 变量var包含了特定行的内容

用法说明:

  • 当其左右无重定向符时|,<时:getline作用于当前文件,读入当前文件的第一行给其后跟的变量var或$0(无变量),应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
  • 当其左右有重定向符时|,<时:getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
文件操作
  • 打开文件 open(“filename”)
  • 关闭文件 close(“filename”)
  • 输出到文件 重定向到文件,如echo | awk ‘{printf(“hello word!n”) > “datafile”}’

笔记 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址