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