from:
$(subst from,to,text)
函式名稱:字串替換函式
函式功能:把字串text中的from字串替換為to
返回值:替換後的新字串
$(subst ee,ee,feet on the stree) //替換「feet on the street「中的ee為ee。結果得到字串」feet on the street」
$(patsubst pattern,replacement,text)
函式名稱:模式替換函式
函式功能:搜尋text中以空格分開的單詞,將符合模式pattern替換為replacement。引數pattern中可以用模式萬用字元%來表示乙個單詞中的諾幹字元。如果引數replacement中也包含乙個%,那麼replacement中的」%」將使pattern中的那個」%」所代表的字串。而且只有第乙個%作為模式字元來處理,之後出現的不再作為模式字元(作為乙個字元)。轉義字元可以避免%不作為為模式字元
返回值:替換後的新字串
函式說明:引數text單詞之間的多個空格在處理時被合併為乙個空格,並忽略前導和結尾空格
$(patsubst %.c,%.o,x.c.c bar.c)
替換以.o結尾的字元,函式的返回結果就為」x.c.o bar.o」
$(strip string)
函式名稱:去空格函式
函式功能:去掉字串string開頭和結尾的空格,並將其中多個連續空字元合併為乙個空字元
返回值:無前導和結尾空字元,使用單一空格分隔的多個單詞的字串
strip函式常用語條件判斷語句的表示式中,確保表示式比較可靠和健壯
$(findstring find,in)
函式名稱:查詢字串函式
函式功能:在字串in中查詢find字串
返回值:如果在in中找到find子字串,則返回find,否則返回空
函式說明:收索是嚴格的文字匹配
$(findstring a,a b c) 返回 a
$(findstring a,b c) 返回 空字元
$(filter pattern…,text)
函式名稱:過濾函式
函式功能:過濾掉字串text中所有不符合模式pattern的單詞,保留所有符合此模式的單詞。模式中一般需要包含字元%,存在多個模式時,模式之間用空格分隔
返回值:空格分隔的text字串中所有符合模式pattern的字串
函式說明:filter可以用來去除乙個變數中的某些字串。
source := foo.c bar.c baz.s ugh.h
foo: $(source)
cc $(filter %.c %s,$(source)) -o foo 此句話等於 cc foo.c bar.c baz.s -o foo 剔除掉了不符合.c,.s 的檔案
$(filter-out pattern…,text)
函式名稱:反過濾函式
函式功能:和filter相反,剔除掉text中所有符合模式pattern的單詞
返回值:空格分隔的所有不符合模式pattern的字串
objects = main1.o foo.o main2.o bar.o
mains = main1.o main2.o
$(filter-out $(mains),$(objects)) 去除了變數object中mains定義的字串(檔名)的功能,返回」foo.o bar.o」
$(sort list)
函式名稱:排序
函式功能:給字串list中的單詞以首字母為主進行排序,並去掉重複的單詞
返回值:空格分隔的沒有重複單詞的字串
$(sort foo bar lose foo)
返回值為」bar foo lose」 公升序排,去掉重複單詞
$(word n,text)
函式名稱:取單詞函式
函式功能:取字串text中第n個單詞(n的值從1開始)
返回值:返回字串text中第n個單詞
函式說明:n大雨字串text中單詞數目,返回空字串。如果n為0,出錯!!
$(word 2,foo bar baz) 返回bar
$(wordlist s,e,text)
函式名稱:取字串函式
函式功能:從字串text中去除從s開始到e打單詞串。s和e表示單詞在字串中位置的數字
返回值:text中從第s到e的單詞串
函式說明:「s」和「e」都是從1開始的數字。當「s」比「text」中的字數大時,返回空。如果「e」大於「text」字數,返回從「s」開始,到「text」結束的單詞串。如果「s」大於「e」,返回空。
$(wordlist 2,3,foo bar baz) 返回」bar baz」
$(words text)
統計text字串的單詞個數,返回值即為單詞個數
$(words,foo bar) 返回值為2.字串text最後乙個單詞就是$(word $(words text),text)
$(firstword names…)
函式名稱:取首單詞函式
功能:取字串「names…「的第乙個單詞
返回值:返回names的第乙個單詞
$(firstword foo bar)
返回值為foo。firstword的實現功能等同於$(word 1,names…)
下面我們來看乙個實際應用:makefile中可以使用vpath來指定搜尋路徑。對於源**所包含的標頭檔案的搜尋路徑需要使用gcc的-l引數指定目錄來實現。vpath羅列的目錄是用:分隔的
……vpath = src:../includes
override cflags += $(patsubst %,-l%,$(subst :, ,$(vpath))) à cflags += -lsrc -l../includes
首先$(subst :, ,$(vpath))將vpath中的:用空格代替。$(patsubst %,-l%,src ../includes) 在patsubst函式中,模式和替換模式中都有%時,兩個%表示同樣的值。而模式直接使用%表示無論啥都匹配,全匹配
shell文字處理
最於檔案的操作以前都是用高階程式語言來操作的。今天恰好需要將乙個目錄中的檔案資訊儲存到sqlite3資料庫中 我用linux中的工具和shell來作為自己畢業設計做原型開發 下面記錄一下這裡用到的部分知識,以作備忘。用ls命令來說明 1.關於shell中的管道和重定向問題。這個知識基礎,這裡不再說了...
WML 文字處理
wml使用xml文件字符集,目前支援unicode 2.0,和hdml不同,wml的所有標籤,屬性和規定的可接收值必須小寫,card的名字和變數也是區分大小寫的。和hdml一樣,對於連續的空字元,只顯示乙個空格。標籤內屬性的值必須用 或者 括起來,屬性名,和值之間不能有空格。對於不成對出現的標籤,必...
shell 文字處理
最近優化指令碼,將幾套指令碼合併,比如,處理nand手機的指令碼和處理emmc手機的指令碼是不一樣的,這導致我們的指令碼有很多個版本。手機側只有busybox,所以不能使用功能強大的python來處理文字。花了半天時間,發現雖然語法比較怪異,但也能簡潔的完成任務。if e proc emmc the...