Regex 当匹配ip地址时,awk正则表达式不工作

Regex 当匹配ip地址时,awk正则表达式不工作,regex,awk,ip-address,Regex,Awk,Ip Address,我想提取文件中的ip地址, 文件的每一行类似于: T 218.241.107.98 167.232.255.245 7 2719 1378473670 N 0 0 0 G 0 I 218.241.107.97,0.146,1 218.241.98.45,0.239,1 192.168.1.253,0.182,1 159.226.253.77,0.210,1 159.226.253.54,0.676,1 159.226.254.254,3

我想提取文件中的ip地址, 文件的每一行类似于:

T   218.241.107.98  167.232.255.245 7   2719    1378473670  N   0   0   0   G   0   I   218.241.107.97,0.146,1  218.241.98.45,0.239,1   192.168.1.253,0.182,1   159.226.253.77,0.210,1  159.226.253.54,0.676,1  159.226.254.254,39.287,1    203.192.137.173,39.335,1    203.192.134.69,50.128,1 61.14.157.141,42.917,1  202.147.61.193,188.165,1    38.104.84.41,201.100,1  154.54.30.193,194.939,1 154.54.41.221,194.915,1 154.54.5.65,237.396,1   154.54.2.81,251.547,1   154.54.24.153,260.946,1 154.54.26.126,256.046,1 154.54.10.14,245.145,1  193.251.240.113,241.663,1   q   q   q   57.69.31.22,283.784,1;57.69.31.22,284.763,1
但是我的awk脚本不起作用

#!/usr/bin/awk -f
BEGIN {
    FS = "[, \t;]"
}
{
    for(i = 4; i <= NF; i++) 
    {
        if ($1 == "#")
            continue
        if ($i ~ /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}/)
            printf $i"\t"
        if (i == NF) 
            printf "\n"
    }
}
有人能找出什么问题吗

我们将非常感谢您的帮助,提前谢谢您

PS:没有输出,只有一个新行字符

试试这个awk


这个!/^/使它只打印不以

开头的行。根据您的输入和脚本,它适用于我。您刚才说的有什么不对?在output@qqibrowIt中只有一个“\n”在这里起作用:似乎您将continue与break混合在一起。如果$1=,则continue语句只跳过for循环的一个节拍。我猜你想跳过这一行,转到下一行,然后你需要一个breaker,你能不能也从上面的输入行发布和示例输出?
awk -F"[, \t;]+" '!/^#/ {for (i=1;i<NF;i++) if ($i ~ /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}/) printf "%s\t",$i;print ""}' file
218.241.107.98  167.232.255.245 218.241.107.97  218.241.98.45   192.168.1.253   159.226.253.77  159.226.253.54  159.226.254.254 203.192.137.173 203.192.134.69  61.14.157.141   202.147.61.193  38.104.84.41        154.54.30.193   154.54.41.221   154.54.5.65     154.54.2.81     154.54.24.153   154.54.26.126   154.54.10.14    193.251.240.113 57.69.31.22     57.69.31.22