AWK 中的 其它函数

首页 / Awk入门教程 / AWK 中的 其它函数

AWK具有以下杂项函数-

close(expr) 关闭

此函数关闭管道文件。

[Learnfk]$awk 'BEGIN {
   cmd="tr [a-z] [A-Z]"
   print "hello, Learnfk !!!" |& cmd
   
   close(cmd, "to")
   cmd |& getline out
   print out;
   
   close(cmd);
}'

在执行此代码时,您将获得以下输出-

HELLO, LEARNFK !!!

delete 删除

此函数从数组中删除元素。 以下示例显示了delete函数的用法-

[Learnfk]$awk 'BEGIN {
   arr[0]="One"
   arr[1]="Two"
   arr[2]="Three"
   arr[3]="Four"
   print "Array elements before delete operation:"
   
   for (i in arr) {
      print arr[i]
   }
   delete arr[0]
   delete arr[1]
   print "Array elements after delete operation:"
   
   for (i in arr) {
      print arr[i]
   }
}'

在执行此代码时,您将获得以下输出-

Array elements before delete operation:
One
Two
Three
Four

Array elements after delete operation:
Three
Four

exit 退出

该函数停止脚本的执行, 它还接受一个可选的expr,它成为AWK的返回值, 以下示例描述了退出函数的用法。

无涯教程网

[Learnfk]$awk 'BEGIN {
   print "Hello, Learnfk !!!"
   exit 10
   print "AWK never executes this statement."
}'

在执行此代码时,您将获得以下输出-

Hello, Learnfk !!!

fflush 刷新

此函数刷新与打开的输出文件或管道关联的所有缓冲区。以下语法演示了该函数。

fflush([output-expr])

如果未提供output-expr,它将刷新标准输出。如果output-expr为空字符串(""),则它将刷新所有打开的文件和管道。

getline 获取一行

此函数指示AWK读取下一行。 以下示例使用getline函数读取并显示mark.txt文件。

[Learnfk]$awk '{getline; print $0}' marks.txt

在执行此代码时,您将获得以下输出-

2) Toolfk   Maths     90
4) Poemfk   English   85
5) Nesfk    History   89

该脚本工作正常。但是第一行在哪里?让我们找出答案。

首先,AWK从文件 marks.txt 中读取第一行并将其存储到 $0 变量中。

最后,AWK的 print 语句显示第二行。此过程一直持续到文件结束。

next 下一行

next 函数更改程序的流程,程序读取下一行,并从新行开始再次执行命令。如,当模式匹配成功时,以下程序不执行任何处理。

[Learnfk]$awk '{if ($0 ~/Chromefk/) next; print $0}' marks.txt

在执行此代码时,您将获得以下输出-

1) Learnfk    Physics   80
2) Toolfk   Maths     90
4) Poemfk   English   85
5) Nesfk    History   89

nextfile 下一个文件

nextfile函数更改程序的流程。 它将停止处理当前输入文件,并从下一个文件的第一条记录开始,通过pattern/procedures语句开始新的循环。 例如,以下示例在模式匹配成功时停止处理第一个文件。

首先创建两个文件。假设 file1.txt 包含-

file1:str1
file1:str2
file1:str3
file1:str4

并且 file2.txt 包含-

file2:str1
file2:str2
file2:str3
file2:str4

现在让我们使用nextfile函数。

[Learnfk]$awk '{ if ($0 ~ /file1:str2/) nextfile; print $0 }' file1.txt file2.txt

在执行此代码时,您将获得以下输出-

file1:str1
file2:str1
file2:str2
file2:str3
file2:str4

return 返回值

可以在用户定义的函数中使用此函数以返回值。 请注意,如果未提供expr,则函数的返回值是不确定的。 下面的示例描述了return函数的用法。

首先,创建一个包含AWK命令的functions.awk文件,如下所示-

function addition(num1, num2) {
   result=num1 + num2
   return result
}
BEGIN {
   res=addition(10, 20)
   print "10 + 20=" res
}

在执行此代码时,您将获得以下输出-

10 + 20=30

system  系统 

该函数执行指定的命令并返回其退出状态,返回状态0表示命令执行成功,非零值表示命令执行失败。 例如,以下示例显示当前日期,还显示命令的返回状态。

[Learnfk]$awk 'BEGIN { ret =system("date"); print "Return value=" ret }'

在执行此代码时,您将获得以下输出-

Sun Dec 21 23:16:07 IST 2014
Return value=0

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出gRPC -〔李林锋〕

如何设计一个秒杀系统 -〔许令波〕

MySQL实战45讲 -〔林晓斌〕

TensorFlow快速入门与实战 -〔彭靖田〕

许式伟的架构课 -〔许式伟〕

A/B测试从0到1 -〔张博伟〕

分布式金融架构课 -〔任杰〕

超级访谈:对话毕玄 -〔毕玄〕

结构学习力 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)