多个比赛用空格隔开

时间:2019-09-11 15:58:43

标签: regex bash shell

我正在研究一个在.txt文件中找到ipv4匹配项的脚本。 这是代码:

#!/bin/bash


        if [ -e $1 ]
        then
                grep -Eow '(^| )(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[[:space:]]) ' $1

        else
                echo "fisierul nu a fost gasit"

        fi

我唯一遇到的问题是,当两个IP地址之间用空格隔开时,只有第一个被打印出来。 12.168.7.4 3.4.2.5。在此示例中,仅打印12.168.7.4,而忽略第二个。如果我使用2个空格,则将同时打印两个地址。是否有任何方法可以解决此问题?

1 个答案:

答案 0 :(得分:0)

尝试使用以下命令:

grep -E  "([0-9]{1,3}[\.]){3}[0-9]{1,3}" $1