awk命令和指令碼的編寫啟蒙
awk的 是一種處理或分析文字檔案的強大方法,特別是按行和列組織的資料檔案。可以從 行執行簡單的awk命令。更復雜的任務應該作為awk程式(所謂的awk )寫入檔案。 |
awk命令的基本格式如下:
awk 'pattern {action}' input-file > output-file
這意味著:取輸入檔案的每一行; 如果該行包含該模式,則將該操作應用於該行並將結果行寫入輸出檔案。 如果省略該模式,則該操作將應用於所有行。 例如:
linuxidc@Ubuntu:~/linuxidc.com$ awk '{ print $5 }' linuxidc.txt > linuxmi.txt
該語句獲取每行第5列的元素,並將其作為一行寫入輸出檔案“output.txt”中。 變數'$4'指的是第四列。 類似地,您可以使用$1,$2,$3等訪問第一列,第二列和第三列。預設情況下,假定列由空格或製表符(所謂的空格)分隔。 因此,如果輸入檔案“linuxidc.txt”包含以下行:
- 1, linuxidc com, Title 599, Price $9.30
- 2, ninhao linuxidc, Title 761, Price $5.90
- 3, naike xie, Title 880, Price $9.10
- 4, Lady Gaga, Title 198, Price $1.30
- 5, Johnny Cash, Title 582, Price $6.50
- 6, Elvis Presley, Title 370, Price $9.30
- 7, John Lennon, Title 571, Price $8.90
- 8, Michael Jackson, Title 673, Price $7.50
- 9, linuxidc com, Title 585, Price $1.80
然後該命令將以下行寫入輸出檔案“linuxmi.txt”:
linuxidc@ubuntu:~/linuxidc.com$ cat linuxmi.txt 599, 761, 880, 198, 582, 370, 571, 673, 585,
如果列分隔符不是空格或製表符(例如逗號),則可以在awk語句中指定,如下所示:
linuxidc@ubuntu:~/linuxidc.com$ awk -F, '{ print $3 }' linuxidc.txt > linuxmi.txt
如果認為列被逗號分隔,這將從每行的第3列中選擇元素。 因此,在這種情況下,輸出將是:
linuxidc@ubuntu:~/linuxidc.com$ cat linuxmi.txt Title 599 Title 761 Title 880 Title 198 Title 582 Title 370 Title 571 Title 673 Title 585
大括號內的語句列表('{','}')稱為塊。 如果將條件表示式放在塊前面,則只有條件為真時才會執行塊內的語句。
awk '$7=="\$7.30" { print $3 }' linuxidc.txt
在這種情況下,條件是$7=="\$7.30",這意味著第7列的元素等於$7.30。 美元符號前面的反斜槓用於阻止系統將$7解釋為變數,而是從字面上理解美元符號。
因此,這個awk語句列印出每行第3列的元素,第7列的“$7.30”。
您還可以使用正規表示式作為條件。 例如:
linuxidc@ubuntu:~/linuxidc.com$ awk '$7=="\$7.30" { print $3 }' linuxidc.txt
兩個斜槓('/')之間的字串是正規表示式。 在這種情況下,它只是字串“30”。 這意味著如果一行包含字串“30”,系統將在該行的第3列列印出該元素。 上例中的輸出將是:
linuxidc@ubuntu:~/linuxidc.com$ awk '/30/ { print $3 }' linuxidc.txt com, Gaga, Presley,
如果表元素是數字,awk可以在它們上執行計算,如下例所示:
linuxidc@ubuntu:~/linuxidc.com$ awk '{ print ($2 * $3) + $7 }' linuxidc.com.txt
除了訪問當前行元素($1,$2等)的變數之外,還有變數$0表示完整行(行),變數NF表示欄位數。
您還可以在此示例中定義新變數:
linuxidc@ubuntu:~/linuxidc.com$ awk '{ sum=0; for (col=1; col<=NF; col++) sum += $col; print sum; }' linuxidc.com.txt
這將計算並列印每行所有元素的總和。
awk語句經常與sed命令結合使用。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2692486/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 專案啟動指令碼的編寫指令碼
- shell編寫服務啟動指令碼指令碼
- gdb指令碼編寫指令碼
- Shell 指令碼編寫指令碼
- 編寫一個小指令碼來啟動和關閉sybase ASE指令碼
- 編譯FFMPEG原始碼的指令碼編寫案例編譯原始碼指令碼
- 油猴指令碼編寫指令碼
- 編寫git指令碼.shGit指令碼
- 編寫shell指令碼的規範指令碼
- 如何編寫高效的 Shell 指令碼指令碼
- 幫助你排序文字檔案的 Awk 命令列或指令碼排序命令列指令碼
- EA指令碼編寫要點指令碼
- 編寫執行R指令碼指令碼
- 一個awk if 巢狀 if 的指令碼巢狀指令碼
- 如何編寫冪等的 Bash 指令碼?- Arslan指令碼
- 如何使用zx編寫shell指令碼指令碼
- systemd 編寫服務管理指令碼指令碼
- Mac 編寫oracle 連線指令碼MacOracle指令碼
- Linux 指令碼編寫基礎Linux指令碼
- Linux指令碼編寫基礎Linux指令碼
- 進行統計的 awk 指令碼(轉)指令碼
- 指令碼三兄弟 grep、awk、sed指令碼
- awk指令碼學習小結指令碼
- Ollydbg 編寫指令碼的一些語法及例子(OD指令碼)指令碼
- awk基礎05-自定義函式和指令碼函式指令碼
- nGrinder中快速編寫groovy指令碼01-指令碼結構指令碼
- 編寫自己的Acunetix WVS漏洞指令碼指令碼
- Linux編寫Bash指令碼的10個技巧Linux指令碼
- 編寫可靠 shell 指令碼的 8 個建議指令碼
- DBA日常維護SQL指令碼_自己編寫的SQL指令碼
- 編寫更好 Bash 指令碼的 8 個建議指令碼
- 從零開始編寫指令碼引擎指令碼
- 技能篇:shell教程及指令碼編寫指令碼
- scala入門之編寫scala指令碼指令碼
- shell 指令碼如何編寫-致初學者指令碼
- isql指令碼編寫建立資料庫SQL指令碼資料庫
- Linux指令碼編寫基礎(五)Linux指令碼
- Linux 指令碼編寫基礎(轉)Linux指令碼