根據運行的環境,操作系統可以分為桌面操作系統,手機操作系統,服務器操作系統,嵌入式操作系統等。 如果您需要獲取輸入文件中奇數行或偶數行的數據,或者每隔一行獲取一次數據,那么對于awk而言,只需一條簡單的語句即可完成,真是太神奇了! CodingAnts@ubuntu:~$ seq 10 | awk 'i=!i'
1
3
5
7
9
為方便起見,用seq命令模擬了10行數據,內容為1到10,可以看到上面的結果顯示了所有的奇數行. 讓我們為所有人閱讀這個awk指令. 在“ awk程序指令模型”中awk 輸出,介紹了awk程序指令由模式和操作組成,即以模式{Action}的形式. 比較上面的說明,發現只有模式而沒有動作,因此這種情況使用默認動作,即輸出整個記錄(相當于打印$ 0的效果). 在分析此模式之前,我們需要介紹如何處理awk中的未定義變量. 在awk中對未定義變量的處理如下: 1. 如果執行數字運算,則會分配初始值0 2. 如果字符正在運行,則初始值將為空字符串 了解awk如何處理未定義的變量后,分析模式要容易得多. 當awk讀取第一行數據時,它將與模式(模式)匹配. 在這里,模式是一個賦值語句: i =!i 讀取第一條數據后,執行模式匹配時,i是未定義的變量. 根據awk處理未定義變量的方式,這是i的值是0,然后!i是!0 ,!是逆數,并且0為false,然后!0為trueawk 輸出,因此賦值語句的結果為i =!0,即為i賦值1. 經過上述計算,Pattern可以等于1,并且1為true,Pattern匹配成功,并輸出當前記錄. 當讀取第二條記錄時,i = 1,i =!i,結果為i = 0,因此Pattern為0,Pattern匹配失敗,然后讀取內容以循環進行上述過程,因此輸出的目的達到奇數行. 為了更清楚地理解上述內容,您可以嘗試自己運行以下命令并觀察輸出: CodingAnts@ubuntu:~$ seq 10 | awk '{i=!i;print i}' 1 0 1 0 1 0 1 0 1 0 CodingAnts@ubuntu:~$ seq 10 | awk '1' 1 2 3 4 5 6 7 8 9 10 CodingAnts@ubuntu:~$ seq 10 | awk '0' 離開工作: 如何使用awk僅輸出偶數行?
|
溫馨提示:喜歡本站的話,請收藏一下本站!