使用 m4 開源專案還是挺多的,之前看到都有的怕怕的,選擇自動略過。今天鼓起勇氣來學習一波。
首先 m4 processor 是乙個「巨集定義」處理器,也就是說,他是乙個純粹的文字處理器,幹些管理模板,使用模板來進行文字替換的活。m4 的應用灰常廣泛,只是我們很少關注它的存在罷了。
為什麼你會經常看到 m4 呢?其中乙個原因可能是你經常使用 autoconf 管理的**包。autoconf 使用它來產生配置指令碼。
m4 的另乙個用途是**的自動生成,當然,這樣生成的**,debug 可能會比較麻煩。據說,m4 會讓那些狂熱的程式設計師上癮,使其痴迷於使用 m4 來解決問題。。。好像很可怕。
乙個簡單例子
假設我們有乙個檔案 foo,其內容為 bar,比如
$ catfoobar
那麼,我們執行下面一句:
m4 -dbar=hello foo -dbar=world foo
將得到結果:
$ m4 -dbar=hello foo -dbar=world foohello
world
這裡,我們先後定義了巨集 bar=hello 和 bar=world。然後,兩次引用檔案foo,並對其內容進行替換。所以,我們分別得到了兩次的處理結果 hello 和 world。
我們可以在命令列進行巨集定義,同樣,也可以在文字中進行巨集定義。所以,這個例子的另乙個版本如下。
我們有乙個檔案,hello.m4,內容如下:
define(`hello', `hello, world')
hello, welcome to m4!
使用 m4 來執行這個檔案:
m4 hello.m4
那麼,我們得到結果:
hello, world, welcome to m4!
在 hello.m4 中,我們定義了巨集 hello=『hello, world』,那麼,經過 m4 處理後的後一句,hello 就被替換成了 hello, world!
9 文字處理
root localhost cat 選項 檔名 或者 root localhost cat 檔案1 檔案2 檔案3 前者用於顯示檔案的內容 a 相當於 vet 選項的整合,用於列出所有隱藏符號 e 列出每行結尾的回車符 n 對輸出的所有行進行編號 b 同 n 不同,此選項表示只對非空行進行編號。t...
3 文字處理庫
文字處理庫主要是對字串的操作使用,以及對文字內容方面進行處理。3.1 string 公共的字串操作 原始碼位置在 lib string.py 3.1.1 字串常量 下面就是在字串模組裡定義的字串常量 string.ascii letters 這個常量包含字母的大寫和小寫,不會隨著本地化而改變。其實它...
6文字處理工具
1 grep命令 i 忽略大小寫 n 顯示結果所在行的行號 c 結果個數 v 反向過濾 r 關鍵字 目錄 在目錄中過濾含有關鍵字的檔案 e 關鍵字1 關鍵字2 過濾多個關鍵字 root localhost cp etc passwd root localhost ls file filegreat ...