首页 > 解决方案 > 在后续条目中重用文本条目中的数值

问题描述

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

我已经尝试过使用 awk、sed 等的解决方案,但到目前为止,即使在许多谷歌的帮助下,我似乎也无法弄清楚这一点。

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 地址。我知道它不干净,但下面是我添加用户和密码的方式。但是每批服务器之间的用户和密码总是相同的,只有附加到用户的服务器编号和密码(两次)。我这样做是因为我们使用的应用程序需要输入: HOSTNAME
IP
User: (username)
Pass: (password)
(empty line)

通常我必须手动输入这些内容,这很耗时,我希望没有必要,因为我已经在我试图构建的脚本中使用以下命令启动它以自动化该过程。

所以我从这个开始:
POP-Test-01
10.10.10.10

我正在尝试解决这个问题:
POP-Test-01
10.10.10.10
User: User01
Pass: 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/>

标签: bash

解决方案


这似乎产生了你正在寻找的东西:

#!/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

由于您没有指定有输入文件,我冒昧地在脚本中生成结束编号,并在用户和传递行中重用它。


推荐阅读