AWK具有以下杂项函数-
此函数关闭管道文件。
[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函数的用法-
[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
该函数停止脚本的执行, 它还接受一个可选的expr,它成为AWK的返回值, 以下示例描述了退出函数的用法。
[Learnfk]$awk 'BEGIN { print "Hello, Learnfk !!!" exit 10 print "AWK never executes this statement." }'
在执行此代码时,您将获得以下输出-
Hello, Learnfk !!!
此函数刷新与打开的输出文件或管道关联的所有缓冲区。以下语法演示了该函数。
fflush([output-expr])
如果未提供output-expr,它将刷新标准输出。如果output-expr为空字符串(""),则它将刷新所有打开的文件和管道。
此函数指示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 函数更改程序的流程,程序读取下一行,并从新行开始再次执行命令。如,当模式匹配成功时,以下程序不执行任何处理。
[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函数更改程序的流程。 它将停止处理当前输入文件,并从下一个文件的第一条记录开始,通过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
可以在用户定义的函数中使用此函数以返回值。 请注意,如果未提供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
该函数执行指定的命令并返回其退出状态,返回状态0表示命令执行成功,非零值表示命令执行失败。 例如,以下示例显示当前日期,还显示命令的返回状态。
[Learnfk]$awk 'BEGIN { ret =system("date"); print "Return value=" ret }'
在执行此代码时,您将获得以下输出-
Sun Dec 21 23:16:07 IST 2014 Return value=0
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)