手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

awk讀取文件的基本邏輯

2024-12-27 17:46:13 3701

awk讀取文件的基本邏輯

歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個(gè)技術(shù)小知識(shí)。


# 用法
awk 'awk_program' a.txt

語法解析:

  • a.txt 是awk要讀取的文件,可以是0個(gè)文件、一個(gè)文件或者多個(gè)文件;如果給定0個(gè)文件,則標(biāo)識(shí)從標(biāo)準(zhǔn)輸入中讀取

  • 單引號(hào)包圍的是awk代碼,也稱為awk程序;盡量使用單引號(hào),因?yàn)樵赼wk程序中經(jīng)常使用$符號(hào),而$符號(hào)在shell中是變量符號(hào),如果使用雙引號(hào),則$符號(hào)會(huì)被shell解析為shell變量,然后進(jìn)行變量替換;使用單引號(hào),會(huì)讓$符號(hào)留給awk去解析

  • awk程序中,大量使用大括號(hào),大括號(hào)表示代碼塊,代碼塊中間可以直接連用,代碼塊內(nèi)部的多個(gè)語句使用分號(hào)";"隔開

# 范例
# 輸出a.txt中的每一行
awk '{print $0}' a.txt

# 多個(gè)代碼塊,代碼塊中多個(gè)語句
# 輸出每行之后還輸出兩行:hello行和world行
awk '{print $0}{print "hello";print "world"}' a.txt

對(duì)于awk '{print $0}' a.txt,它類似于shell的while循環(huán)while read line;do echo "$line";done <a.txt。awk隱藏了讀取每一行的while循環(huán),它會(huì)自動(dòng)讀取每一行,其中的{print $0}對(duì)應(yīng)于Shell的while循環(huán)體echo "$line"部分。

下面再分析該awk命令的執(zhí)行過程:

  1. 讀取文件第一行(awk默認(rèn)按行讀取文件)

  2. 將所讀取的行賦值給awk的變量$0,于是$0中保存的就是本次所讀取的行數(shù)據(jù)

  3. 進(jìn)入代碼塊{print $0}并執(zhí)行其中代碼print $0,即輸出$0,也即輸出當(dāng)前所讀取的行

  4. 執(zhí)行完本次代碼之后,進(jìn)入下一輪awk循環(huán):繼續(xù)讀取下一行(第二行)

    • 將第二行賦值給變量$0

    • 進(jìn)入代碼塊執(zhí)行print $0

    • 執(zhí)行完代碼塊后再次進(jìn)入下一輪awk循環(huán),即讀取第三行,然后賦值給$0,再執(zhí)行代碼塊

    • …不斷循環(huán),直到讀完文件所有數(shù)據(jù)…

  5. 退出awk


藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。

更多技術(shù)知識(shí),藍(lán)隊(duì)云期待與你一起探索。




提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: