awk sub和gsub區別及用法

2021-09-02 12:01:36 字數 2339 閱讀 6479

awk -f '|'  '' data.test

三。sub和gsub的區別

sub匹配第一次出現的符合模式的字串,相當於 sed 's//'   。

gsub匹配所有的符合模式的字串,相當於 sed 's//g'   。

例如:

awk '' urfile    用macintosh替換mac

awk '' file    第乙個域內用macintosh替換mac

把上面sub換成gsub就表示在滿足條件得域裡面替換所有的字元。

awk的sub函式用法:

sub函式匹配指定域/記錄中最大、最靠左邊的子字串的正規表示式,並用替換字串替換這些字串。

如果沒有指定目標字串就預設使用整個記錄。替換只發生在第一次匹配的時候。格式如下:

sub (regular expression, substitution string):

sub (regular expression, substitution string, target string)

例項:

$ awk '' testfile

$ awk '' testfile

第乙個例子在整個記錄中匹配,替換只發生在第一次匹配發生的時候。

第二個例子在整個記錄的第乙個域中進行匹配,替換只發生在第一次匹配發生的時候。

如要在整個檔案中進行匹配需要用到gsub

gsub函式作用如sub,但它在整個文件中進行匹配。格式如下:

gsub (regular expression, substitution string)

gsub (regular expression, substitution string, target string)

例項:

$ awk '' testfile

$ awk '' testfile

第乙個例子在整個文件中匹配test,匹配的都被替換成mytest。

第二個例子在整個文件的第乙個域中匹配,所有匹配的都被替換成mytest。

另外, 只有當記錄中的域有改變的時候 ,指定0fs變數才有用, 如果記錄中的域無變化, 指定ofs產生不了實際效果。

awk -f'|' -v ofs='|' '' data.txt

將把第三個域中所有數字都去掉。

另外,對於數字的匹配,可以使用十六進製制。

awk -f'|' -v ofs='|' '' data.txt

刪除所有空白:(空格、tab等)【注:三條語句等效】:

[oracle@localhost 201402261951.script]$ echo 'a bc  d' | awk ''

abcd

[oracle@localhost 201402261951.script]$ echo 'a bc  d' | awk 'gsub(/[[:blank:]]/, "",$0)'

abcd

【下面這條語句好像只輸出被處理完畢後的那些行,未沒被處理的行,不會輸出。上面的2條命令,不論是否被處理,每行都會被輸出,因為有print $0】

[oracle@localhost 201402261951.script]$ echo 'a bc  d' | awk 'gsub(/[[:blank:]]/, "")'

abcd

**:

ruby中gsub和gsub 的區別

ruby中帶 和不帶 的方法的最大的區別就是帶 的會改變呼叫物件本身了。比方說str.gsub a b 不會改變str本身,只會返回乙個新的str。而str.gsub a b 就會把str本身給改了。但是gsub和gsub 還有另外乙個不同點就是,gsub不管怎麼樣都會返回乙個新的字串,而gsub ...

ruby中gsub和gsub 的區別

ruby中帶 和不帶 的方法的最大的區別就是帶 的會改變呼叫物件本身了。比方說str.gsub a b 不會改變str本身,只會返回乙個新的str。而str.gsub a b 就會把str本身給改了。但是gsub和gsub 還有另外乙個不同點就是,gsub不管怎麼樣都會返回乙個新的字串,而gsub ...

和 及 和 的區別

和 都為與,進行與運算時只有當兩個條件都為真時結果才為真,否則為假 和 都為或,進行或運算時只要兩個條件有乙個為真結果就為真,否則為假 序號邏輯運算子描述1 與2 短路與3 或 4 短路或 與 和短路與 的區別是因為進行與運算時只要第乙個條件為假時無論第二個條件的真值為什麼計算結果都為假,所以如果是...