output.xml 我不明-6ren">
gpt4 book ai didi

linux - 使用 sed linux 命令

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:52 25 4
gpt4 key购买 nike

在我的 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\"匹配文字文本。引号被转义,因为整个模式出现在引号内,但 shell 在 sed 看到它们之前删除了引号字符 ( \ )。

[ ]*匹配零个或多个空格。

><Number>none匹配文字文本。

[ ]*匹配零个或多个空格。

</Number></Telephone>匹配文字文本。

~~模式分隔符结束搜索模式,并围绕一个空的替换模式。

g是一个标志,表示替换将在每一行上执行多次。

唯一让我困惑的是这个模式不会匹配任何有换行符的东西,所以我假设你的 input.xml实际上没有像示例数据中那样格式化?

关于linux - 使用 sed linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com