Awk打印以regex (IP地址)开头的行



我正在尝试读取那些在第一列上有IP地址的行文件。

下面的命令不返回任何值。

cat test.csv | awk '$1 == "^[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}]" { print $0 }'

regex可以捕获IP地址

也试过了,

cat test_1.csv | awk '$1~/^[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3]/ {print $0}'

test.csv

1.1.1.1 ipaddress gateway
2.2.2.2 ipaddress_2 firewall
www.google.com domain google

使用grep:

可以更容易地做到这一点。
grep -P '^d+(.d+){3}s' test.csv

grep -P '^d{1,3}(.d{1,3}){3}s' test.csv

当您在GNU awk中使用{1,3}(间隔表达式)时,您必须使用--re-interval(或)--posix选项来启用它。

使用:

awk --posix '$1 ~ /^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/' file

(或)

awk --re-interval '$1 ~ /^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/' file

From man awk:

r {n, m}

大括号内的一个或两个数字表示间隔表达式。区间表达式仅在——posix——re-interval在命令行中指定。

最新更新