如何使用awk處理文字內容
導讀 | Awk是為高階文字處理而設計的非常強大的工具。它逐行搜尋掃描檔案,將輸入的每行分割成欄位,將輸入行或欄位與模式進行比較,並對匹配的結果執行操作。 |
本節將使用sub和gsub函式和awk 來刪除檔案中的製表符和空格。我們將使用以下文字檔案作為本文中所有示例的輸入檔案:
[root@localhost ~]# cat << EOF >> content.txt
出現大於號時將一下內容複製到終端,將文字內容儲存到content.txt檔案中。
hitesh engineer sales 30000 jayesh director account 25000 vyom manager purchase 20000 bhavesh engineer sales 30000 rajesh directory sales 40000 niraj clerk account 20000 jay peon purchase 23000 deep clerk sales 20000 EOF
可以使用awk的特殊變數
NF
,從檔案中刪除所有空白行。例如,刪除檔案content.txt中的所有空白行。
[root@localhost ~]# awk NF content.txt
使用awk 在檔案開頭找到一個或多個空格或製表符並刪除。可以使用以下命令:
[root@localhost ~]# awk '{ sub(/^[ \t]+/, ""); print }' content.txt
命令列中的意思是:使用sub函式找到開頭是製表符和空格的行,並替換空格和製表符為空。注意:sub()函式替換隻發生在第一次匹配的時候,也就是一行中有多個空格或多個製表符,只替換左面的第一個。
刪除末尾的空格和製表符可以使用下面的命令:
[root@localhost ~]# awk '{ sub(/[ \t]+$/, ""); print }' content.txt
同時查詢開頭和末尾的空格和製表符,可以使用下面命令:
[root@localhost ~]# awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }' content.txt
gsub函式表示滿足條件,替換所有的匹配字元。
它記錄陣列中的所有行,並將它們以相反的順序排列。使用以下命令:
[root@localhost ~]# awk '{ b[i++] = $0 } END { for (j=i-1; j>=0;) print b[j--] }' content.txt
使用以下命令使用NF內建變數對非空行進行編號:
[root@localhost ~]# awk 'NF { $0=++a ": " $0 }; { print }' content.txt
使用以下命令來列印包含engineer的總行數:
[root@localhost ~]# awk '/engineer/{n++}; END {print n+0}' content.txt
下面例項中,篩選出含有 engineer字串的行:
[root@localhost ~]# awk '/engineer/' content.txt
下面例項中,列印不包含字串 jayesh 的行:
[root@localhost ~]# awk '!/jayesh/' content.txt
例項一:將content.txt中的字串“ engineer”替換為“ doctor”,用到gsub()函式:
[root@localhost ~]# awk '{gsub(/engineer/,"doctor")}{print}' content.txt
例項二:查詢字串“ jayesh”,“ hitesh”或“ bhavesh”,並將其替換為字串“ mahesh”,執行以下命令:
[root@localhost ~]# awk '{gsub(/jayesh|hitesh|bhavesh/ , "mahesh"); print}' content.txt
可以將awk命令與df一起使用,只顯示裝置名稱和可用空間、使用率。
[root@localhost ~]# df -h | awk '{printf("%-24s \t %-6s \t %-4s \n",$1,$4,$5)}'
如果認為伺服器受到攻擊,那麼這種awk單行程式碼非常有用。它將顯示伺服器的開啟連線列表,並按數量對它們進行排序。
[root@localhost ~]# netstat -ntu|awk '{print $5}'|cut -d: -f1|awk '/[0-9]/'|sort|uniq -c|sort -n
我們透過實際示例瞭解如何使用一行awk命令執行日常任務。
本文原創地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2727633/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在Linux中,如何使用awk和sed進行文字處理?Linux
- LINUX系統 利用AWK命令處理文字資料過程Linux
- Linux:管道命令與文字處理三劍客(grep、sed、awk)Linux
- robotframework 使用jQuery處理頁面display隱藏內容FrameworkjQuery
- 使用 awk 命令統計文字
- 使用 React.cloneElement 動態處理 JSX 和字串內容ReactJS字串
- 如何用Python批量提取PDF文字內容?Python
- 使用IText7和miniExcel處理pdf並輸出內容Excel
- 如何快速處理證件文字識別
- Python提取文字指定內容Python
- canvas 寫入文字內容Canvas
- Awk給檔案中的行前後新增內容
- ORACLE GoldenGate 使用技巧-容錯處理等OracleGo
- Linux檔案處理三劍客之awkLinux
- Linux文字處理命令Linux
- 網站模板文字內容修改,如何在網站後臺或程式碼編輯器中修改模板文字內容網站
- 透過awk在指定的列後面加內容
- 文字內容差異對比
- word(2010)使用VBA完成批處理操作-批量清除表格某單元格內容
- 網站模板文字內容修改,如何在網站後臺或程式碼編輯器中準確修改模板文字內容網站
- 10 文字分析處理命令
- Linux文字處理技巧分享Linux
- CSS禁止選中文字內容CSS
- vim 清空內容和替換文字
- 使用 selenium 等待元素的 text 直到出現自己想要的文字內容,該如何做?
- 錄音內容如何轉成文字?從音訊中提取文字的實用方法音訊
- Adobe Photoshop 2020 Mac使用教程!如何使用“內容識別填充”功能來刪除內容!Mac
- Flink快照容錯處理
- Python文字預處理:步驟、使用工具及示例Python
- 如何使用ScrapySharp下載網頁內容網頁
- 如何使用htmlq提取html檔案內容HTML
- 如何處理內聯元素中的空隙(譯)
- 文字檢測預處理地址
- PHP (超文字前處理器)PHP
- Linux文字處理詳細教程Linux
- FSNotes for mac文字處理軟體Mac
- FSNotes for mac 文字處理軟體Mac
- 雲端計算教程學習路線影片原始碼課件:linux文字處理三劍客之AWK原始碼Linux