[英]Working with sed linux command
在我的shellscript
代碼中,我看到有一行正在使用sed
命令處理Telephone
號碼。
sed "s~<Telephone type[ ]*=[ ]*\"fax\"[ ]*><Number>none[ ]*</Number></Telephone>~~g" input.xml > output.xml
我不了解正則表達式的實際作用。
<Telephone type[ ]*=[ ]*\"fax\"[ ]*><Number>none[ ]*</Number></Telephone>
我正在做工程,以使其正常工作。
我的xml結構如下。
<ContactMethod>
<InternetEmailAddress>donald.francis@lexisnexis.com</InternetEmailAddress>
<Telephone type = "work">
<Number>215-639-9000 x3281</Number>
</Telephone>
<Telephone type = "home">
<Number>484-231-1141</Number>
</Telephone>
<Telephone type = "fax">
<Number>N/A</Number>
</Telephone>
<Telephone type = "work">
<Number>215-639-9000 x3281</Number>
</Telephone>
<Telephone type = "home">
<Number>484-231-1141</Number>
</Telephone>
<Telephone type = "fax">
<Number>none</Number>
</Telephone>
<Telephone type1 = "fax12234">
<Number>484-231-1141sadsadasdasdaasd</Number>
</Telephone>
</ContactMethod>
該正則表達式可識別<Telephone type = "fax">
條目,其中編號為none
條目將被刪除。
分解:
s
為“取代” sed命令。
~
模式分隔符。 您可以為此選擇任何字符。 sed重新識別它是因為它緊隨s
。
<Telephone type
匹配文字文本“ <電話類型”。
[ ]*
匹配零個或多個空格。
=
匹配文字“ =“
[ ]*
匹配零個或多個空格。
\\"fax\\"
匹配文字。 因為整個模式都出現在引號內,所以引號被轉義,但是在sed看到它們之前,shell刪除了引號字符( \\
)。
[ ]*
匹配零個或多個空格。
><Number>none
匹配文字的文本。
[ ]*
匹配零個或多個空格。
</Number></Telephone>
與文字文本匹配。
~~
模式分隔符結束搜索模式,並包圍一個空的替換模式。
g
是一個標志,表示替換將在每行上執行多次。
唯一令我困惑的是,該模式將不匹配任何包含換行符的內容,因此我認為您的input.xml
格式實際上不像示例數據中的格式嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.