Linux 以regex(IP地址)开头的Awk打印行
我正在尝试读取那些在第一列有IP地址的行的文件 下面的命令不返回任何值Linux 以regex(IP地址)开头的Awk打印行,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,我正在尝试读取那些在第一列有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 $
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
使用
grep
,您可以更轻松地执行此操作:
grep -P '^\d+(\.\d+){3}\s' test.csv
或
使用
grep
,您可以更轻松地执行此操作:
grep -P '^\d+(\.\d+){3}\s' test.csv
或
在GNU
awk
中使用{1,3}
(区间表达式)时,必须使用--re Interval
(或)--posix
选项来启用它
使用:
(或)
从man awk
:
r{n,m}
大括号内的一个或两个数字表示区间表达式。
仅当--posix或
--在命令行上指定重新间隔
在GNU
awk
中使用{1,3}
(区间表达式)时,必须使用--re Interval
(或)--posix
选项来启用它
使用:
(或)
从man awk
:
r{n,m}
大括号内的一个或两个数字表示区间表达式。
仅当--posix或
--在命令行上指定重新间隔
使用正则表达式操作符
~
匹配正则表达式。不是==
。另外,awk
可以从文件中读取输入。您不需要使用cat
。只需awk'$1~/^regex/”文件
发布输入和输出的最小示例。为什么要在regex周围放置[…]
?这可能没有达到您在这里希望的效果。@sat关于=
是正确的,@EricRenouf关于[…]
是正确的,并且您还缺少最后一个}
。显然,您应该尝试一个更简短的regexp,然后将其构建为长的regexp。使用regex操作符~
来匹配regex。不是==
。另外,awk
可以从文件中读取输入。您不需要使用cat
。只需awk'$1~/^regex/”文件
发布输入和输出的最小示例。为什么要在regex周围放置[…]
?这可能没有达到您在这里希望的效果。@sat关于=
是正确的,@EricRenouf关于[…]
是正确的,并且您还缺少最后一个}
。显然,您应该尝试一个更简短的regexp,然后将其扩展到那个长的regexp。是否有一些设置可以启用其中一个或两个选项?在GNU Awk 4.1.3
…@spasic上没有任何选项都可以正常工作,它在GNU Awk 3.1.8
上不工作。在GNU Awk 4
上,它可能已启用。哦,好的。。在GNU awk 3.1.8上有/没有这些选项的情况下,awk'/^[0-9]{1,3}(\.[0-9]{1,3}){3}\s/'文件
工作吗?@spasic,它将只在GNU awk 3.1.8
上使用这些选项。顺便说一句,您的regexp缺少结尾的$
,可以缩写为$1~/[0-9]{1,3}{$/
是否存在启用其中一个或两个选项的设置?在GNU Awk 4.1.3
…@spasic上没有任何选项都可以正常工作,它在GNU Awk 3.1.8
上不工作。在GNU Awk 4
上,它可能已启用。哦,好的。。在GNU awk 3.1.8上有/没有这些选项的情况下,awk'/^[0-9]{1,3}(\.[0-9]{1,3}){3}\s/'文件
工作吗?@spasic,它将只在GNU awk 3.1.8
上使用这些选项。顺便说一句,您的regexp缺少结尾的$
,可以缩写为$1~/[0-9]{1,3}{$/
不确定这是否会过滤ip地址,那么1.1.1.300呢?使用grep并不容易,而且这只适用于GNU grep,而awk'$1~/^[0-9]{1,3}(\.[0-9]{1,3}$/'test.csv
将适用于任何POSIX awk。不确定这是否会过滤ip地址,那么1.1.1.300呢?使用grep并不容易,这只适用于GNU grep,而awk'$1~/^[0-9]{1,3}(\.[0-9]{1,3}){3}$/'test.csv
将适用于任何POSIX awk。
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