簡體   English   中英

如何使用sed或perl命令刪除模式開始和結束模式之間的模式?

[英]How to delete the pattern between start of the pattern and a line before the end pattern using sed or perl command?

這是輸入文件

{1:IRVTUS30XXX}{2:I304dfaffaefa}{3:fewfa]}
:15A:
:20:1234556
:22:dsafas
dsafafaf
erwfafgr
:23:fewfd
:24:firh
:60:uncenjnjcdv
:72:uenuernfk
12345
-}

在這里,我想從輸入文件中刪除一些標簽信息。 (標記為:15A::22:位於冒號之間的標記稱為標記)

如果要刪除標簽20,可以使用以下perl命令:

perl -i -pe 's/:20:(.*)\r\n//g' file

但是對於像:22:或:72:這樣的多行標記的標記..我如何刪除那些標記?

在這里,您可以選擇兩個標簽號。 22和標簽號 72

:(72|22):([\w\d]*(\r?\n|\r\n?)+)+

是匹配測試。

除去標簽22的示例代碼(適用於多行或單行):

% perl -00 -pe 's/^:22:.*?(?=(?:^:\d+\w*|$))//ms' file.txt
{1:IRVTUS30XXX}{2:I304dfaffaefa}{3:fewfa]}
:15A:
:20:1234556
:23:fewfd
:24:firh
:60:uncenjnjcdv
:72:uenuernfk
12345
-}

暫無
暫無

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

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