繁体   English   中英

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

[英]grep and AWK command to read host name and print columns

我正在使用以下简单的 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

请帮我解决这个问题。

评论后编辑:

这是一个纯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

grep解决方案相比,纯awk优势在于您只匹配第一列而不是整行。 另外,如果您使用==而不是~ ,您可以确保您只获得精确的主机名匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM