<?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 输入换行符。