awk中的getline函数


getline

getline函数得到下一行可能的返回值为:

1 如果能够读取一行。
0 如果到了文件末尾。
-1 如果遇到错误。

从文件中读取
getline函数除了能读取正常的输入流外,还可以从文件或管道中读取。
while((getline<"filepath")>0)
print

将输入赋给一个变量
读取下一行并赋值给变量input:
getline input

从管道读取输入
执行一个命令并将结果用管道输送到getline。
"who am i"|getline
当一个命令的输出结果被用管道输送给getline且包含多个行时,必须创建一个循环来执行getline。
while("who"|getline)
who_out[++i]=$0

获取用户标准输入

1.getline<"-"

2.getline<"/dev/tty"

例子:

awk 'BEGIN{printf "Enter your name:";getline<"-";print}'

三个$1

#!/bin/bash
filename:awk_whoami.sh
awk '
BEGIN{"who am i"|getline
name=$1
FS=":"
}
name ~ $1{print $5}
' $1

第一个$1:getline读取下一行将其赋给$0,故$1指新输入行的$1。
第二个$1:指第三个$1中的且与name匹配的某一行的$1。
第三个$1:指脚本后的参数,如./awk_whoami.sh /etc/passwd,故此$1指/etc/passwd。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM