【发布时间】:2020-12-21 19:49:15
【问题描述】:
我正在运行一个脚本,以使用我使用要更新的文件中的字符串运行的命令的输出。
for CLIENT in `cat /home/"$ID"/file.txt | awk '{print $3}'`
do
sed "/$CLIENT/ s/$/ $(sudo bpgetconfig -g $CLIENT -L | grep -i "version name")/" /home/"$ID"/file.txt >> /home/"$ID"/updated_file.txt
done
输出为每一行打印一次整个文件,并更新相关匹配行。
如何对其进行排序,使其仅将匹配的行发送到新文件。
输入文件包含类似于以下的行:
"Host OS" "OS Version" "Hostname"
我想运行一个脚本,该脚本将使用主机名来运行命令并获取主机上应用程序的详细信息,然后仅将应用程序版本打印到包含主机的行尾:
"Host OS" "OS Version" "Hostname" "Application Version
【问题讨论】:
-
匹配是否会发生在文件中的任何位置,或者您是否打算简单地找到客户在第三个字段中所在的行?那么这又是另一种反模式,也是相当大规模逻辑改进的另一种途径。
-
您是在附加相同的字符串,还是
command某些命令会根据CLIENT而变化?几乎可以肯定,有一种简单的方法可以实现您想要的,如果您能描述它是什么,将会有所帮助。 -
该文件包含类似于以下的行: ** "Host OS" "OS Version" "Hostname" ** 我想运行一个脚本,该脚本将使用主机名来运行命令并获取有关的详细信息主机上的应用程序,然后仅将应用程序版本打印到主机所在行的末尾:**“主机操作系统”“操作系统版本”“主机名”“应用程序版本”**
-
文件中的字符串是否真的包含引号和引号内的空格?
-
抱歉,如果问题的格式不正确,仍在学习中。文件中有空格,但没有引号。