Re: [問題] 請教一個正規表示法

看板Linux作者 (三十個扮上進青年之一)時間13年前 (2011/01/28 11:25), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《Arim (Arim5566)》之銘言: : 各位板友好 : 小弟初次接觸正規表示法 : 想請問一下 : 如果我有一個test.dat的內容如下的話 : bus b a : 現在想要利用sed把a跟b用空字串取消掉 : 本來是打sed 's/ [a-z]($| )//g' test.dat : 其中的($| )表示檔案結尾或者是空白 : 可是結果是一個都不能取代 : 請問我應該要怎麼寫才是正確的? 就不要省事,寫兩段: $ cat test.dat bus b a airplane c d $ sed -e 's/ [a-z]$/ /' -e 's/ [a-z] / /' test.dat bus airplane 不知道是不是你想要的。 -- 人不作出犧牲,便得不到任何收穫;如果要得到某種東西,就必須付出同等代價。這一點 ,就是鍊金術的基本原則 ── 等價交換。當時我們深信這一點就是世界的真理。 阿爾風斯‧愛力克,《鋼之鍊金術師》開場白 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.229.29

01/28 12:32, , 1F
感謝~只是不懂如果只寫一段的話要怎麼寫才是正確的@@
01/28 12:32, 1F

01/28 15:01, , 2F
在ERE中,($| )才代表行尾或空白,使用gnu sed時,若要它把RE
01/28 15:01, 2F

01/28 15:01, , 3F
解讀成ERE,必須加上-r, 如 sed -r -e '....'
01/28 15:01, 3F

01/28 21:09, , 4F
感謝樓上大大..我忽略了這是延伸的正規表示法@@
01/28 21:09, 4F

01/31 10:45, , 5F
也謝謝 changyj 教我這段。
01/31 10:45, 5F
文章代碼(AID): #1DGZSnjk (Linux)
文章代碼(AID): #1DGZSnjk (Linux)