[問題] 文檔複數行取代

看板Perl作者 (月餅)時間7年前 (2017/01/23 20:25), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/1
請問各位先進, 我有一堆文檔大概長這樣 Xxxx Xxxx begin ABC=123; end 其中 begin ABC=123; end 是固定每個檔案都有, xxx內容則不固定, 會出現begin和end 但是中間不會剛好只有一行ABC=123; 小弟想將每個文檔固定的三行刪除 "perl -pi -e 's/begin\nABC=123;\nend\n//g' $IFilename 這樣沒辦法, 想請問問題在那邊, 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.26.10 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1485174330.A.A4E.html

01/23 20:47, , 1F
因為 Perl one-liner 預設一次只讀一行
01/23 20:47, 1F

01/23 20:48, , 2F
試試看 -0777 將整個檔案讀入看看
01/23 20:48, 2F

01/23 20:56, , 3F
所以你是想把 begin 到 end 中間的東西都刪掉?
01/23 20:56, 3F

01/23 21:29, , 4F
是的 照Neisseria大大的作法順利完成, 非常感謝
01/23 21:29, 4F

01/23 22:39, , 5F
也可以用..
01/23 22:39, 5F

01/23 22:40, , 6F
perl -pe '$_ = "" if /^begin$/../^end$/' $IFilename
01/23 22:40, 6F

01/23 22:41, , 7F
裡面用到的 .. 運算子可以參考 #1IRX5P3B 這篇~
01/23 22:41, 7F

01/23 22:47, , 9F
囧, 發現我上次在板上發言也是在講 .. 運算子
01/23 22:47, 9F

01/23 22:58, , 10F
那個 .. 運算子我也沒看過,每次看到都覺得像新的一樣
01/23 22:58, 10F

01/24 00:39, , 11F
但點點沒辦法解決中間必須出現唯一一次ABC=123的需求
01/24 00:39, 11F

01/25 23:17, , 12F
他不是說中間不一定是一行嗎?
01/25 23:17, 12F
文章代碼(AID): #1OXVOwfE (Perl)
文章代碼(AID): #1OXVOwfE (Perl)