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]=$0bash

獲取用戶標準輸入函數

1.getline<"-"spa

2.getline<"/dev/tty"get

例子:input

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。

awk

相關文章
相關標籤/搜索