我正在尝试读取那些在第一列上有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在命令行中指定。