sed & awk 概述

概述html

通常狀況下,從grep到sed和awk的學習過程是很天然的。sed和awk是通常用戶、程序員和系統管理員們處理文本文件的有力工具。程序員

sed的名字來源於其功能,它是個字符流編輯器(stream editor),能夠很好地完成對多個文件的一系列編輯工做。正則表達式

awk的名字來源於它的開發人Aho、Weinberger和Kernighan,它是一種程序設計語言,很是適合結構化數據的處理和格式化報表的生成。數組

sed 與 awk 共性編輯器

它們都使用類似的語法來調用。
它們都是面向字符流的,都是從文本文件中一次一行地讀取輸入,並將輸出直接送到標準輸出端。
它們都使用正則表達式進行模式匹配。
它們容許用戶在腳本中指定指令。函數

它們有如此多的共同點,緣由之是它們都起源於相同的行編輯器—ed。sed和awk的區別在於它們控制所作的工做時所用的指令不一樣。工具

語法學習

command [toptions] script_filenamespa

輸入:stdin 或 文件設計

輸出:stdout 或 文件

禁止:輸入輸出是同一個文件

參數:sed和awk有區別,後面單獨介紹

腳本:當命令較少時,能夠單獨輸入,命令多時就須要寫道腳本文件中。

sed & awk指令組成

工做流程

每一個程序每次從輸入文件中讀取一個輸入行,生成該輸入行的備份,而且對該備份執行腳本中指定的指令。所以,對輸入行所作的改動不會影響真正的輸入文件。

當讀取輸入的每行時,程序讀取腳本中的第一個指令並檢測當前行的模式。若是沒有匹配,這個過程被忽略並讀取下一個指令。若是有一個匹配,那麼執行過程當中指定的一個或多個動做。讀取全部的指令,而不僅是讀取與輸入行匹配的第一條指令。當全部可用指令被解釋並應用於單個行後,sed輸出該行並循環處理每一個輸入行。另外一方面,awk不自動輸出行,腳本中的指令控制awk最終所作的事情。在sed和awk中過程的內容有很大不一樣。在sed中,過程由相似於行編輯器中使用的那些編輯命令組成。大部分命令由單個字母組成。在awk中,過程由程序設計語句和函數組成。過程必須用大括號括起。

相關文章
相關標籤/搜索