首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找文件中缺少哪一台服务器的Bash脚本?

查找文件中缺少哪一台服务器的Bash脚本?
EN

Stack Overflow用户
提问于 2015-04-28 16:25:01
回答 2查看 66关注 0票数 1

我对BASH脚本比较陌生。我希望有人能帮忙。我有两个文件。文件1是包含某些服务器属性的.csv文件。

cmdb_ci_linux_server.csv

代码语言:javascript
复制
"CLS000","csl000","Linux SuSe","9","HP"
"CLS001","cls001","Linux SuSe","9","VMware, Inc."
"CLS002","cls002","Linux Red Hat","5.11","VMware, Inc."
...
"VSRQ1CS1","vrsq1cs1","Linux SuSe","11","VMware, Inc."

这些是已签出的服务器。我需要将它与所有服务器的列表进行比较,并找出哪些服务器没有被检查。所有服务器的列表都是这种格式的: hosts.txt

代码语言:javascript
复制
cls000
cls001
cls002
cls003
cls004
cls005
...
cls499

我试过几种不同的脚本,没有一种适合我。我试着在不同的脚本中完成所有的步骤,希望我能保持相对简单。这件事对我来说是有道理的,但它什么也回不来。任何帮助都是非常感谢的。

代码语言:javascript
复制
#!/bin/bash

while IFS="," read name host_name os os_version manufacturer
do
cat cmdb_ci_linux_server.csv

cat hosts.txt

grep -vf cmdb_ci_linux_server.csv hosts.txt

done

我对linux很了解,但不是很清楚。我对窗户更熟悉。我有点出乎意料地被投入了这份工作

提前谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 16:37:35

试试这个:

代码语言:javascript
复制
(cat cmdb_ci_linux_server.csv | 
 awk 'BEGIN{FS=","}{print substr($2,2,length($2)-2)}'|
 sort | uniq;
 cat hosts.txt | sort | uniq) | sort | uniq -c

举例结果:

1个cls000 2个cls001 2个cls002 1个cls003 1个cls004 1个cls005 1个csl000

左数:表示发现的次数

票数 0
EN

Stack Overflow用户

发布于 2015-04-28 16:34:46

这应该是可行的:

代码语言:javascript
复制
while  read line
do
IFS=","
arr=($line)
text=${arr[1]//\"/""}
[[ $(grep $text hosts.txt -c) -le 0 ]] && echo "$text: Not Matched"
done <cmdb_ci_linux_server.csv 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29924839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档