【總結】awk與sed的區別

來源:互聯網
上載者:User
awk

awk是一種程式語言,對文檔資料的處理具有很強的功能。awk擅長從格式化報文或從一個大的文字檔中抽取資料。

awk的命令格式為:

awk [-F filed-separator] “commands” input-file(s) 

每一個命令(commands)都由兩部分組成:一個模式(pattern)和一個相應的動作
(action)

/pattern1/{action1}<br />/pattern2/{action2}<br />/pattern3/{action3} 

awk將一行文字按分隔字元(filed-separator)分為多個域,依次記為$ 1,$ 2 . . . $ n。$0代表所有域值。因此awk更適合於以域為單位來處理檔案。加之ARGIND等內建變數,使awk能處理多個檔案。典型的應用為尋找一個檔案中的某個欄位是否在另一個檔案中出現。例子見我的另一篇部落格【awk】詭異的錯誤,linux和windows換行的區別。但由於$0代表所有域,即整行,因此awk也有簡單行處理能力。

sed

sed 是一個精簡的、非互動編輯器。它能執行與編輯vi和emacs相同的編輯任務,但sed編輯器不提供互動使用方式,只能在命令列下輸入編輯命令。

sed的命令格式為:

sed [options] 'command' file(s)<br />sed [options] -f scrīptfile file(s) 

作為編輯器,當然少不了插入(a/、i/)、刪除(d)、尋找替換(s)等命令。詳見sed命令詳解 。

總結
  1. 如果檔案是格式化的,即由分隔字元分為多個域的,優先使用awk
  2. awk適合按列(域)操作,sed適合按行操作
  3. awk適合對檔案的抽取整理,sed適合對檔案的編輯。
  4. (想到再補~)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.