關於 m4 文字處理引擎

2022-02-21 11:08:29 字數 1070 閱讀 9173

使用 m4 開源專案還是挺多的,之前看到都有的怕怕的,選擇自動略過。今天鼓起勇氣來學習一波。

首先 m4 processor 是乙個「巨集定義」處理器,也就是說,他是乙個純粹的文字處理器,幹些管理模板,使用模板來進行文字替換的活。m4 的應用灰常廣泛,只是我們很少關注它的存在罷了。

為什麼你會經常看到 m4 呢?其中乙個原因可能是你經常使用 autoconf 管理的**包。autoconf 使用它來產生配置指令碼。

m4 的另乙個用途是**的自動生成,當然,這樣生成的**,debug 可能會比較麻煩。據說,m4 會讓那些狂熱的程式設計師上癮,使其痴迷於使用 m4 來解決問題。。。好像很可怕。

乙個簡單例子

假設我們有乙個檔案 foo,其內容為 bar,比如

$ cat

foobar

那麼,我們執行下面一句:

m4 -dbar=hello foo -dbar=world foo

將得到結果:

$ m4 -dbar=hello foo -dbar=world foo

hello

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 ...