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。