我试图读取第一列上有IP地址的那些行的文件。
我的命令下面没有返回任何值。
cat test.csv | awk '$1 == "^[[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}]" { print $0 }'
正则表达式可以捕获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
答案 0 :(得分:3)
您可以使用grep
grep -P '^\d+(\.\d+){3}\s' test.csv
或
grep -P '^\d{1,3}(\.\d{1,3}){3}\s' test.csv
答案 1 :(得分:0)
在GNU {1,3}
中使用awk
(区间表达式)时,您必须使用--re-interval
(或)--posix
选项启用它。
使用:
awk --posix '$1 ~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/' file
(OR)
awk --re-interval '$1 ~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/' file
来自man awk
:
环R {N,M}
大括号内的一个或两个数字表示区间表达式。 区间表达式仅在 - posix 或时才可用 在命令行中指定了 - re-interval 。