如何使用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
- awk 字串處理字串
- robotframework 使用jQuery處理頁面display隱藏內容FrameworkjQuery
- php形式的內容被處理PHP
- textarea中內容處理問題
- LINUX系統 利用AWK命令處理文字資料過程Linux
- Linux:管道命令與文字處理三劍客(grep、sed、awk)Linux
- linux_shell_awk 處理 文字檔案 並匯入excelLinuxExcel
- 使用 awk 命令統計文字
- ModernUI教程:處理內容導航事件UI事件
- 幾個常用的文字處理shell 命令:find、grep、sort、uniq、sed、awk
- 如何用Python批量提取PDF文字內容?Python
- Linux 文字處理工具(grep sed awk )Linux
- Python 對文件內容TFIDF處理Python
- 使用awk批處理在字串中增加特殊符號字串符號
- awk比較檔案內容的差異
- canvas 寫入文字內容Canvas
- input 文字框內容居中
- zt 運用 Range 物件處理 Word 文件內容物件
- 如何快速處理證件文字識別
- 使用 Linux/Unix 進行文字處理Linux
- Awk給檔案中的行前後新增內容
- linux替換文字內容Linux
- Python提取文字指定內容Python
- awk 系列:如何讓 awk 使用 Shell 變數變數
- 使用awk+sort+uniq進行文字分析
- 處理網站中的重複內容問題網站
- ueditor文字框初始化如何顯示預設內容,以及文字框獲取焦點後清空預設內容
- Linux文字處理命令sed基本使用示例Linux
- ORACLE GoldenGate 使用技巧-容錯處理等OracleGo
- CSS禁止選中文字內容CSS
- JavaScript 文字框輸入內容同步JavaScript
- jQuery文字框輸入內容同步jQuery
- 錄音內容如何轉成文字?從音訊中提取文字的實用方法音訊
- 如何使用htmlq提取html檔案內容HTML
- 全棧 - 17 NLP 使用jieba分詞處理文字全棧Jieba分詞
- jquery實現的設定指定元素的文字內容和html內容jQueryHTML
- 10 文字分析處理命令