sed & awk 概述


概述

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

sed的名字來源於其功能,它是個字符流編輯器(stream editor),可以很好地完成對多個文件的一系列編輯工作。

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

sed 與 awk 共性

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

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

語法

command [toptions] script_filename

輸入:stdin 或 文件

輸出:stdout 或 文件

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

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

腳本:當命令較少時,可以單獨輸入,命令多時就需要寫道腳本文件中。

sed & awk指令組成

工作流程

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM