我正在尝试使过程自动化并创建所需的输出文件。到目前为止,一切进展顺利,但我无法弄清楚如何将数字取到一行的末尾并在后面的行中填写。
我已经尝试过使用awk,sed等解决方案,但到目前为止,即使在许多Google的帮助下,我似乎也无法弄清楚。
POP-Test-01
10.10.10.10
用户:用户
通过:通过
POP-Test-02
10.10.10.11
用户:用户
通过:通过
POP-Test-03
10.10.10.12
用户:用户
通过:通过
但是我希望它从第一行取数字值,并将其附加到用户并通过行。但是对于通过线,我想添加两次。
POP-Test-01
10.10.10.10
用户:User01
通行证:Pass0101
POP-Test-02
10.10.10.11
用户:User02
通行证:Pass0202
POP-Test-03
10.10.10.12
用户:User03
通行证:Pass0303
这些仅是示例,但主机名的后两位数字(例如POP-Test-03)将始终是数字。
编辑: 我已经请求了更多详细信息。不好意思,这是骨感。请注意,所有值都是伪造的,它们来自输入文件。我只是使用了我能想到的最通用的值。
输入是一个文本文件,只有顶部示例中的值。
因此,我运行了一个用于部署实例的脚本,从部署脚本中获得的唯一输出是主机名和IP地址。我知道它不干净,但是下面是我添加用户和密码的方式。但是,每批服务器之间的用户名和密码始终相同,仅将服务器号附加到用户名和密码(两次)之后。我这样做是因为我们使用的应用程序需要输入以下内容:
主机名
IP
用户:(用户名)
密码:(密码)
(空行)
通常我必须手动输入这些信息,这很耗时,我希望没有必要,因为我已经在脚本中尝试使用以下命令启动该脚本,以使其自动化。
所以我从这个开始:
POP-Test-01
10.10.10.10
我正在努力做到这一点:
POP-Test-01
10.10.10.10
用户:User01
通行证:Pass0101
awk '/([0-9]{1,3}[\.]){3}[0-9]{1,3}/{print;print "User\:
Train";next}1' DeploymentDetails2.txt | tee DeploymentDetails2.txt<br/>
awk '/User/{print;print "Pass\: Training";next}1'
DeploymentDetails2.txt | tee DeploymentDetails2.txt<br/>
awk '/Pass/{print;print "\n";next}1' DeploymentDetails2.txt | tee
DeploymentDetails.txt<br/>
答案 0 :(得分:0)
这似乎产生了您想要的东西:
#!/bin/bash
HOST="POP-Test-"
IP=10
for i in {01..99} ; do
echo ${HOST}${i}
echo "10.0.10.${IP}"
echo "User: User${i}"
echo "Pass: Pass${i}${i}"
echo
let IP++
done
由于您没有指定输入文件,因此我自由地在脚本中生成结束号,并在用户行和密码行中重复使用它。