grep和AWK命令读取主机名和打印列

时间:2017-02-06 12:45:21

标签: linux bash shell awk grep

使用以下简单的grep& AWK命令匹配CSV文件中的主机名和打印ID。

我的命令:

#!/bin/bash
host=`hostname`
/bin/cat /tmp/MasterInventory.csv | grep -i $host | awk -F, '{print $1}' > /opt/input_appProfile.id

我的CSV广告资源:

Hostname                  App_ID       
SercverTest345             12               
Mytestserver01             17               
Mytestserver02             19  

如果cmd搜索Mytestserver02它正在打印App_ID 17& 19,但实际上它应该只根据主机名

打印19

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

评论后编辑:

这是一个纯粹的awk解决方案:

awk -v host="$(hostname)" 'tolower($1)~tolower(host){print $2}' /tmp/MasterInventory.csv > /opt/input_appProfile.id

以下是使用grep的解决方案,如果您愿意的话:

grep -i `hostname` /tmp/MasterInventory.csv | awk '{print $1}' > /opt/input_appProfile.id

awk优于grep解决方案的优点是您只匹配第一列而不是整行。另外,如果您使用==代替~,则可以确保您只获得确切的主机名匹配。