用多个数据替换一个变量

用多个数据替换一个变量
<?xml version="1.0" encoding="UTF-8"?>
<Servers>
    <Putty>
        <Node Type="1">
            <SavedSession>Default Settings</SavedSession>
            <DisplayName>SAMPLE</DisplayName>
            <ServerName>SAMPLE</ServerName>
            <PuttyConType>4</PuttyConType>
            <Port>22</Port>
            <UserName>root</UserName>
            <Password>whatever</Password>
            <PasswordDelay>0</PasswordDelay>
            <CLParams>SAMPLE -ssh -P 22 -l root</CLParams>
            <ScriptDelay>0</ScriptDelay>
        </Node>
    </Putty>
</Servers>

这是 MTPuTTy 的 XML 格式的输出。

我有一个 txt 格式的 IP 列表,每行一个,我想要用每一行替换 SAMPLE,例如列表是这样的

198.168.1.1
198.168.1.2
198.168.1.3

我希望输出是这样的

<Node Type="1">
    <DisplayName>198.168.1.1</DisplayName>
    <ServerName>198.168.1.1</ServerName>
    <CLParams>198.168.1.1 -ssh -P 22 -l root</CLParams>
</Node>

<Node Type="2">
    <DisplayName>198.168.1.2</DisplayName>
    <ServerName>198.168.1.2</ServerName>
    <CLParams>198.168.1.2 -ssh -P 22 -l root</CLParams>
</Node>

<Node Type="3">
    <DisplayName>198.168.1.3</DisplayName>
    <ServerName>198.168.1.3</ServerName>
    <CLParams>198.168.1.3 -ssh -P 22 -l root</CLParams>
</Node>

为了简化,我省略了未改变的行。

我怎样才能实现自动化?

答案1

您可以使用正则表达式搜索和替换。

搜索

^([0-9.]+\.([0-9]+))$

用。。。来代替

<Node Type="$2">
    <DisplayName>$1</DisplayName>
    <ServerName>$1</ServerName>
    <CLParams>$1 -ssh -P 22 -l root</CLParams>
</Node>

使用 Ctrl-Enter 输入换行符。

相关内容