awk實(shí)戰(zhàn)4-分字段內(nèi)容的替換

1 簡(jiǎn)單例子

通常對(duì)字符串的替換用sed的情況比較多,但是有時(shí)需要將字符串分成字段后,對(duì)某個(gè)字段進(jìn)行替換操作,這時(shí)就需要用awk的內(nèi)置字符串函數(shù)sub或gsub實(shí)現(xiàn)。

下面是樣本字符串:

mm/dd,2018/01/22 00:00:01

操作1:將第一個(gè)“/”替換成空格,后面的“/”不變

$ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," 'sub("/"," ")'

mm dd,2018/01/22 00:00:01

操作2:將所有“/”替換成空格

$ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," 'gsub("/"," ")'

mm dd,2018 01 22 00:00:01

操作3:將第2和第3個(gè)“/”替換成空格,第1個(gè)“/”不變

$ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," 'gsub("/"," ",$2)'

mm/dd 2018 01 22 00:00:01
問(wèn)題來(lái)了,dd后面的“,”分隔符沒(méi)有了,因?yàn)檫@里的替換是針對(duì)字段進(jìn)行的,字段內(nèi)容發(fā)生了變化,意味著需要重新設(shè)定輸出分隔符OFS。

$ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," -v OFS="," 'gsub("/"," ",$2)'

mm/dd,2018 01 22 00:00:01

操作4:如果只需第2個(gè)“/”替換成空格,第1個(gè)和第3個(gè)“/”不變

$ echo "mm/dd,2018/01/22 00:00:01" | awk -F"," -v OFS="," 'sub("/"," ",$2)'

mm/dd,2018 01/22 00:00:01

2 sub和gsub的區(qū)別

sub匹配第一次出現(xiàn)的符合模式的字符串,相當(dāng)于 sed 's//'

sub函數(shù)匹配指定域/記錄中最大、最靠左邊的子字符串的正則表達(dá)式,并用替換字符串替換這些字符串。如果沒(méi)有指定目標(biāo)字符串就默認(rèn)使用整個(gè)記錄。替換只發(fā)生在第一次匹配的時(shí)候。

格式如下:

  • sub (regular expression, substitution string)
  • sub (regular expression, substitution string, target string)

gsub匹配所有的符合模式的字符串,相當(dāng)于 sed 's//g'
gsub函數(shù)作用跟sub類(lèi)似,但它會(huì)替換所有匹配值

格式如下:

  • gsub (regular expression, substitution string)
  • gsub (regular expression, substitution string, target string)

另外, 只有針對(duì)字段進(jìn)行替換的時(shí)候 ,指定0FS變量才有用, 如果不指定字段,對(duì)整條記錄進(jìn)行替換,不需要指定OFS。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • awk: grep,sed,awk grep:文本過(guò)濾 sed:文本編輯 awk:文本格式化工具; 1 什么是aw...
    木林森閱讀 1,919評(píng)論 0 16
  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語(yǔ)言,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等;大學(xué)畢...
    oceanfive閱讀 3,407評(píng)論 0 7
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,737評(píng)論 0 5
  • 在挖掘分析的過(guò)程當(dāng)中對(duì)字符串的處理是極為重要的,且出現(xiàn)也較為頻繁,R語(yǔ)言作為當(dāng)前最為流行的開(kāi)源數(shù)據(jù)分析和可視化平臺(tái)...
    果果哥哥BBQ閱讀 6,163評(píng)論 0 8
  • python的re模塊--細(xì)說(shuō)正則表達(dá)式 可能是東半球最詳細(xì)最全面的re教程,翻譯自官方文檔,因?yàn)楣俜轿臋n寫(xiě)的是真...
    立而人閱讀 23,457評(píng)論 4 46

友情鏈接更多精彩內(nèi)容