<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          教你如何使用 awk 處理文本內(nèi)容

          共 2456字,需瀏覽 5分鐘

           ·

          2020-10-21 07:51


          點擊「閱讀原文」查看良許原創(chuàng)精品視頻。

          Awk是為高級文本處理而設(shè)計的非常強大的工具。它逐行搜索掃描文件,將輸入的每行分割成字段,將輸入行或字段與模式進行比較,并對匹配的結(jié)果執(zhí)行操作。
          本節(jié)將使用sub和gsub函數(shù)和awk命令來刪除文件中的制表符和空格。我們將使用以下文本文件作為本文中所有示例的輸入文件:

          [root@localhost?~]#?cat?<>?content.txt

          <以上代碼可復(fù)制粘貼,可往左滑>
          出現(xiàn)大于號時將以下內(nèi)容復(fù)制到終端,將文本內(nèi)容保存到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
          <以上代碼可復(fù)制粘貼,可往左滑>


          刪除文件中的所有空白行
          可以使用awk的特殊變量NF,從文件中刪除所有空白行。例如,刪除文件content.txt中的所有空白行。

          [root@localhost?~]#?awk?NF?content.txt?
          <以上代碼可復(fù)制粘貼,可往左滑>


          刪除每行開頭或者末尾的空格和制表符
          使用awk命令在文件開頭找到一個或多個空格或制表符并刪除??梢允褂靡韵旅睿?/span>

          [root@localhost?~]#?awk?'{?sub(/^[?\t]+/,?"");?print?}'?content.txt
          <以上代碼可復(fù)制粘貼,可往左滑>



          命令行中的意思是:使用sub函數(shù)找到開頭是制表符和空格的行,并替換空格和制表符為空。注意:sub()函數(shù)替換只發(fā)生在第一次匹配的時候,也就是一行中有多個空格或多個制表符,只替換左面的第一個。

          刪除末尾的空格和制表符可以使用下面的命令:

          [root@localhost?~]#?awk?'{?sub(/[?\t]+$/,?"");?print?}'?content.txt
          <以上代碼可復(fù)制粘貼,可往左滑>

          同時查詢開頭和末尾的空格和制表符,可以使用下面命令:

          [root@localhost?~]#?awk?'{?gsub(/^[?\t]+|[?\t]+$/,?"");?print?}'?content.txt
          <以上代碼可復(fù)制粘貼,可往左滑>

          gsub函數(shù)表示滿足條件,替換所有的匹配字符。
          倒序列出文件中的所有行
          它記錄數(shù)組中的所有行,并將它們以相反的順序排列。使用以下命令:

          [root@localhost?~]#?awk?'{?b[i++]?=?$0?}?END?{?for?(j=i-1;?j>=0;)?print?b[j--]?}'?content.txt
          <以上代碼可復(fù)制粘貼,可往左滑>


          添加行號為每行內(nèi)容
          使用以下命令使用NF內(nèi)置變量對非空行進行編號:

          [root@localhost?~]#?awk?'NF?{?$0=++a?":?"?$0?};?{?print?}'?content.txt?
          <以上代碼可復(fù)制粘貼,可往左滑>


          打印包含特定字符串的行數(shù)
          使用以下命令來打印包含engineer的總行數(shù):

          [root@localhost?~]#?awk?'/engineer/{n++};?END?{print?n+0}'??content.txt
          <以上代碼可復(fù)制粘貼,可往左滑>


          打印與指定字符串匹配的行
          下面實例中,篩選出含有 engineer字符串的行:

          [root@localhost?~]#?awk?'/engineer/'?content.txt?
          <以上代碼可復(fù)制粘貼,可往左滑>



          打印與指定字符串不匹配的行
          下面實例中,打印不包含字符串 jayesh 的行:

          [root@localhost?~]#?awk?'!/jayesh/'?content.txt?
          <以上代碼可復(fù)制粘貼,可往左滑>



          替換字符串
          實例一:將content.txt中的字符串“ engineer”替換為“ doctor”,用到gsub()函數(shù):

          [root@localhost?~]#?awk?'{gsub(/engineer/,"doctor")}{print}'?content.txt?
          <以上代碼可復(fù)制粘貼,可往左滑>



          實例二:查找字符串“ jayesh”,“ hitesh”或“ bhavesh”,并將其替換為字符串“ mahesh”,運行以下命令:

          [root@localhost?~]#?awk?'{gsub(/jayesh|hitesh|bhavesh/?,?"mahesh");?print}'?content.txt?
          <以上代碼可復(fù)制粘貼,可往左滑>



          配合df命令,顯示磁盤空間
          可以將awk命令與df一起使用,只顯示設(shè)備名稱和可用空間、使用率。

          [root@localhost?~]#?df?-h?|?awk?'{printf("%-24s?\t?%-6s?\t?%-4s?\n",$1,$4,$5)}'
          <以上代碼可復(fù)制粘貼,可往左滑>



          查看每個IP打開的連接數(shù)
          如果認(rèn)為服務(wù)器受到攻擊,那么這種awk單行代碼非常有用。它將顯示服務(wù)器的打開連接列表,并按數(shù)量對它們進行排序。

          [root@localhost?~]#?netstat?-ntu|awk?'{print?$5}'|cut?-d:?-f1|awk?'/[0-9]/'|sort|uniq?-c|sort?-n
          <以上代碼可復(fù)制粘貼,可往左滑>



          總? ? 結(jié)
          我們通過實際示例了解如何使用一行awk命令執(zhí)行日常任務(wù)。


          良許個人微信


          添加良許個人微信即送3套程序員必讀資料


          → 精選技術(shù)資料共享

          → 高手如云交流社群





          本公眾號全部博文已整理成一個目錄,請在公眾號里回復(fù)「m」獲??!

          推薦閱讀:

          中美日印程序員收入對比

          Linux安裝軟件時90%的人會遇到這個報錯,如何解決?

          《最受歡迎的男友職業(yè)排行榜Top10》


          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費獲取?。?/span>


          瀏覽 80
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美色图久久 | 少妇大战28厘米黑人 | 亚洲成人免费观看 | 成人网站免费在线观看 | 亚洲乱伦第一页 |