[英]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.