簡體   English   中英

如何使用Perl One Liner刪除文件中的特定文本?

[英]How to delete specfic text in a file using a perl one liner?

我正在嘗試在XML文件中查找一些文本,並僅刪除包含該文本的行的一部分。
我發現嘗試這種格式: perl -p -i -e "s/$1/$2/g" $3經過一些代碼搜索。

所以我正在使用以下代碼:

perl -p -i.bak -e "s/\'../../../specialText/\'//g" "C:/box/fileName.XML";

我想做的是從內部單引號中刪除所有內容,例如: '../../../specialText/' ,但是使用q()或\\'轉義引號不起作用,我不確定..也不會搞亂事情。 我猜想不輸入任何內容作為文本替換將正確刪除它,但是我不確定。

錯誤是:

  1. 反斜杠在-e第1行的“ / specialText / \\”附近找到了運算符的預期位置

  2. (在\\?之前缺少運算符)-e行1上“ / specialText / \\”附近的語法錯誤

  3. 在-e第1行EOF之前的任何位置都找不到字符串終止符“'”。

如何重寫此襯板以實現此目的?

這可行。

C:\box>perl -p -i.bak -e s/Copyright/bar/g Test.txt

我在另一個文件上嘗試過,所以現在我只需要使用它來修改我的原始文件。

您可以逃脫. 通過在每個搜索字符串之前加上反斜杠( \\ ),在搜索字符串中添加/和。

但是,為避免急性牙簽綜合征 ,我建議改為使用替代的正則表達式定界符以及\\Q\\E 轉義序列 ,如下所示:

perl -p -i.bak -e "s(\Q'../../../specialText/'\E)()g" "C:/box/fileName.XML"

使用另一組定界符有什么問題?

perl -p -i.bak -e "s{'../../../specialText/'}{}g" "C:/box/fileName.XML"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM