在后续条目中重复使用文本条目中的数值

时间:2019-06-13 19:20:43

标签: bash

我正在尝试使过程自动化并创建所需的输出文件。到目前为止,一切进展顺利,但我无法弄清楚如何将数字取到一行的末尾并在后面的行中填写。

我已经尝试过使用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/>

1 个答案:

答案 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

由于您没有指定输入文件,因此我自由地在脚本中生成结束号,并在用户行和密码行中重复使用它。