匹配dd:dd:dd并在bash

时间:2017-11-03 09:20:06

标签: bash parsing

我正在尝试从sftp服务器收集的 device_output文件中匹配一些数字,例如“ 38:00:00 ”,并将一些if条件作为发送邮件与那个输出。我做了一些事情,但我希望在 egrep“旁边有一些更高级的代码:”:))

device_output文件

<style>
table,td{blbalba}
</style>
Device Name     Ip Address  Flaps   ASN Uptime
Nexus           182.168.2.2 0       300 38:00:20
ASA Firewall    182.168.2.3 0       400 44:01:20
ASR CUBE        182.168.2.4 0       400 22w02d
VMWare          182.168.2.5 0       400 12:03:20
Nexus           182.168.2.5 0       400 12w03d
Nexus           182.168.2.5 0       400 12:03:20

bash脚本:

#!/bin/bash

#Variables 
SFTPHOSTNAME="192.168.1.1"
SFTPUSERNAME="user"
SFTPPASSWORD="pass"
FOLDER="/home/$USER/ftp"
#SFTP CONNECTION
output=$(sshpass -p $SFTPPASSWORD sftp $SFTPUSERNAME@$SFTPHOSTNAME << !
    cd $FOLDER
    get device_status
 exit
!);

#!/bin/bash
if egrep ":" device_output ; then

          cat device_output | egrep ":|style|table|Device"  | mailx -s "$(echo -e "BGP Sessions Uptime Issue \nContent-Type: text/html")" -r from_user@yah to_user@yah
else
        exit 0
fi

1 个答案:

答案 0 :(得分:0)

我想你可以这样使用egrep:

egrep ".:..:.."

匹配1:00:0038:00:00

或者,如果你关心数字:

egrep "[0-9]:[0-9][0-9]:[0-9][0-9]|[0-9]:"也匹配