【发布时间】:2016-09-03 11:27:49
【问题描述】:
我正在尝试读取第一列具有 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
【问题讨论】:
-
使用正则表达式运算符
~匹配正则表达式。不是==。此外,awk可以从文件中读取输入。您不需要使用cat。只需awk '$1 ~ /^regex/' file -
贴一个输入输出的最小例子。
-
你为什么要在正则表达式周围加上
[...]?这可能无法满足您的期望。 -
@sat 关于
==是正确的,@EricRenouf 关于[...]是正确的,而且您还缺少最终的}。显然,您应该尝试过更简短的正则表达式,然后构建到那个长的。