bash脚本:在列中搜索文件中的值

时间:2015-03-10 15:11:19

标签: bash awk aix

我在网站上搜索过但找不到详尽无遗的内容。

我有一个服务器列表“hostA hostB hostc hostd”和一个中央主机hostX

hostX通过ssh连接到服务器,并获得以下代码

==============================================================================
----- Host Bus Adapters --------- ------ Storage System -----    - I/O Paths -
###  HW Path                         ID           Interface     Total    Dead
==============================================================================
   0 fscsi0                       CKM00130600171   CL1-06           10       0
   0 fscsi0                       CKM00130600171   CL1-02           10       0
   0 fscsi0                       CKM00130600177   CL2-06            1       1
   1 fscsi1                       CKM00130600171   CL1-03           10       0
   1 fscsi1                       CKM00130600171   CL1-07           10       0
   1 fscsi1                       CKM00130600177   CL2-07            1       1
   1 fscsi1                       CKM00130600177   CL2-03            1       1
   2 fscsi2                       CKM00130600171   CL1-06           10       0
   2 fscsi2                       CKM00130600171   CL1-02           10       0
   2 fscsi2                       CKM00130600177   CL2-02            1       1
   2 fscsi2                       CKM00130600177   CL2-06            1       1
   3 fscsi3                       CKM00130600171   CL1-03           10       0
   3 fscsi3                       CKM00130600171   CL1-07           10       0
   3 fscsi3                       CKM00130600177   CL2-07            1       1

我应该完成一个脚本,看看是否有死路径并发送电子邮件。

但我不知道如何阅读最后一栏,我做了最后一栏的推断,但不知道如何比较

awk  '{print $(NF)}' /SERVER/hostA.txt  |grep -x '[0-9]*'
你可以帮帮我吗?

最好的问候 Isifer

2 个答案:

答案 0 :(得分:1)

awk '$NF==1' /SERVER/hostA.txt |
while IFS= read -r line
do
    mailx -s "Its dead, Jim: $line" ...
done

根据需要完成/替换mailx行......

答案 1 :(得分:0)

如果您只想grep不以0结尾的行,可以使用

grep '[^0]$\|[0-9]0$'

即。该行的最后一个字符不是0,或者前面是另一个数字。