在Bash中从字符串中提取字符串

时间:2017-04-04 11:52:04

标签: bash

脚本从文本文件中读取行。一条线看起来像这样。

227 A S  comment=comment string dst-address=9.9.9.9/29 gateway=192.168.199.2 gateway-status=192.168.199.2 reachable via  LACP1=1 scope=30 target-scope=10

为此分配变量$ route

然后,我需要将9.9.9.9/29指定为变量$subnet。我无法使用awk,因为dst-address的列位置会在行中有所不同。

总结一下,我需要搜索每一行" dst-address="然后在' ='之后分配字符串。变量$ subnet。

我理想的解决方案是

while read routes ; do
    subnet=< code I need >
done < /tmp/routingTable.txt

2 个答案:

答案 0 :(得分:0)

perl -n -e'/dst-address=(\S+)/ && print $1."\n"' your_file 解决方案:

$filterArray = array();
foreach($arr as $key=>$val){
    if(strtotime($val['date-begin']) >= strtotime($postedDateBegin) && strtotime($val['date-end']) <= strtotime($postedDateEnd)){
        $filterArray[] = $val;
    }
}

答案 1 :(得分:0)

没有循环的bash解决方案

echo $route | sed -r "s/.*dst-address=([0-9./]+).*/\1/"