awk處理字符串分割


awk模式

BEGIN 和 END,BEGIN 被放置在沒有讀取任何數據之前,而 END 被放置在所有的數據讀取完成以后執行

體現如下:
BEGIN{}: 讀入第一行文本之前執行的語句,一般用來初始化操作
{}: 逐行處理
END{}: 處理完最后一行文本后執行,一般用來處理輸出結果

分割字符串

awk規定引用系統變量必須使用單引號加雙引號,即'"$sysvar"'這樣的格式,

但是split函數也需要雙引號來定界,但這個雙引號又不能讓sh解釋,而應留給awk來解釋,所以使用了\"和\"組成的雙引號

s="0,1,2,3"
awk 'BEGIN{split('"\"$s\""',myarray,","); for(i in myarray) {if(myarray[i]>1) print myarray[i]}}'

輸出2 3

分割字符串后與文件中字符匹配

文件內容:

xx|yy|000|aa|0|cc|cc|cc|

對於上述內容如果第5個字段可以匹配字符串s的字符,就打印輸出,否則濾掉

s="0,1,2,3"
array=(${s//,/ })
#echo "${array[@]}"
awk -F '|' 'BEGIN{split('"\"$s\""',myarray,",")} {for(i in myarray) {if($5 == myarray[i])print $0}}' text.txt


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM