看板 Linux 關於我們 聯絡資訊
※ 引述《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
Arim:感謝~只是不懂如果只寫一段的話要怎麼寫才是正確的@@ 01/28 12:32
changyj:在ERE中,($| )才代表行尾或空白,使用gnu sed時,若要它把RE 01/28 15:01
changyj:解讀成ERE,必須加上-r, 如 sed -r -e '....' 01/28 15:01
Arim:感謝樓上大大..我忽略了這是延伸的正規表示法@@ 01/28 21:09
antontw:也謝謝 changyj 教我這段。 01/31 10:45