Shell脚本-如何在填充数据的同时留出一些时间?

拉斐尔维拉迪亚斯

你能帮我么?感谢您的协助!

我有这个文件:

[root@acnode1 tmp]# cat nodeidhost.out
               node_id                | hostname
 c31abf5a-ece5-4da5-afa3-1af4e19f9749 | acnode1.storagedomain
 c41bcebe-37a3-42ce-8ded-249b2726ca17 | acnode2.storagedomain
 5b00247c-f38c-4c8e-9835-a8b935549267 | acnode3.storagedomain
 10a69825-38d8-4675-b845-906d94a99ec8 | acnode4.storagedomain
 f2cb6d0f-54fa-4c70-ac02-65ff8aca9edc | acnode5.storagedomain

和这个文件:

[root@acnode1 tmp]# cat nodeidversion.out
               node_id                | installed_version | available_version
 c31abf5a-ece5-4da5-afa3-1af4e19f9749 | 4.5.0-284         | 4.5.0-284
 c41bcebe-37a3-42ce-8ded-249b2726ca17 | 4.5.0-284         | 4.5.0-284
 5b00247c-f38c-4c8e-9835-a8b935549267 | 4.5.0-284         | 4.5.0-284
 10a69825-38d8-4675-b845-906d94a99ec8 | 4.5.0-284         | 4.5.0-284
 f2cb6d0f-54fa-4c70-ac02-65ff8aca9edc | 4.5.0-284         | 4.5.0-284

我正在尝试在while内创建一会儿,所以在第一个会'nodeidhost.out'加载ID(第一列)和Hostname(第二列)的同时,但是我还需要检查文件'nodeidversion.out'到检查什么是“ installed_version”和“ available_version”并合并以下详细信息:

注意:“ node_id”列是进行比较的“主键”:

while read nodeid; do
        node_id=`echo $nodeid | awk '{print $1}'`
        node_name=`echo $nodeid | awk '{print $3}' | cut -d"." -f1`
        .... second while checking 'installed_version' and 'available_version' from 'nodeidversion.out'
done < /tmp/nodeidhost.out

最后,我需要类似的东西:

节点XXXX正在运行版本YYYY,最新版本为ZZZZ

你能帮我么?谢谢!!

隐秘者

通过尝试使用嵌套的while循环手动解析文件,您的生活变得太复杂了。符合join命令:

Usage: join [OPTION]... FILE1 FILE2
For each pair of input lines with identical join fields, write a line to
standard output.  The default join field is the first, delimited by blanks.
...

请参阅man join以获取更多信息。解决您的问题的示例用法:

$ join -t'|' -j1 -o 1.2,2.2,2.3 --header nodeid* | column -s'|' -o' | ' -t
 hostname              |  installed_version  |  available_version
 acnode1.storagedomain |  4.5.0-284          |  4.5.0-284
 acnode2.storagedomain |  4.5.0-284          |  4.5.0-284
 acnode3.storagedomain |  4.5.0-284          |  4.5.0-284
 acnode4.storagedomain |  4.5.0-284          |  4.5.0-284
 acnode5.storagedomain |  4.5.0-284          |  4.5.0-284

标志说明:

  • -t'|' 指定输入文件以竖线分隔。
  • -j1使联接位于两个文件的第一个字段上。(这里实际上是多余的,因为默认值是在第一个字段上加入。)
  • -o 1.2,2.2,2.3 指定文件1的第2列的输出格式,然后是文件2的第2列和第3列。
  • --header 因为文件有标头...我认为这没有什么区别,但不会造成伤害。
  • | column ... (etc) 只需进行一些后期处理即可整理列对齐,因为join会从输入中丢弃该信息。

注意:join命令确实假定输入已排序。使用sort命令对输入进行预处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Shell脚本-如何在填充数据的同时留出一些时间?

来自分类Dev

Shell 脚本删除一些文件

来自分类Dev

如何编写shell脚本来启动一些程序?

来自分类Dev

如何编写shell脚本来启动一些程序?

来自分类Dev

如何执行shell脚本?

来自分类Dev

如何执行shell脚本?

来自分类Dev

同时从并行Shell脚本调用Python脚本

来自分类Dev

如何在Shell脚本中运行Shell脚本

来自分类Dev

如何从soapui groovy脚本执行shell脚本?

来自分类Dev

如何从soapui groovy脚本执行shell脚本?

来自分类Dev

如何从 perl 脚本调用 shell 脚本

来自分类Dev

如何从内部更新Shell脚本

来自分类Dev

如何从Shell脚本运行Knitr

来自分类Dev

如何替换此Shell脚本?

来自分类Dev

如何从Hubot执行Shell脚本

来自分类Dev

如何从AppleScript运行Shell脚本?

来自分类Dev

如何从PHP脚本执行Shell

来自分类Dev

如何替换顶级shell脚本?

来自分类Dev

shell脚本如何使用$variable

来自分类Dev

用于更改用户的Shell脚本,指定一些输入,然后与Shell进行交互

来自分类Dev

用于更改用户的Shell脚本,指定一些输入,然后与Shell进行交互

来自分类Dev

shell脚本-如何在shell脚本中使用变量而不在脚本中定义变量

来自分类Dev

如何在Shell脚本中运行别名?

来自分类Dev

如何在Shell脚本中更改PATH?

来自分类Dev

如何在shell脚本中打印$?

来自分类Dev

如何在Shell脚本中使用if else

来自分类Dev

如何在Shell脚本中运行SQL

来自分类Dev

如何在Jenkinsfile中执行Shell脚本?

来自分类Dev

如何在Shell脚本中创建别名?