[英]Filter apache log file using regular expression
我有一个很大的apache日志文件,我需要对其进行过滤,仅将某个IP:192.168.1.102的日志保留在新文件中。
我尝试使用以下命令:
sed -e "/^192.168.1.102/d" < input.txt > output.txt
但是“ / d”删除了那些条目,我不需要离开它们。
谢谢。
使用grep
呢?
cat input.txt | grep -e "^192.168.1.102" > output.txt
编辑:如下面的注释中所述,转义正则表达式中的点对于使其正确是必要的。 用反斜杠转义正则表达式:
cat input.txt | grep -e "^192\.168\.1\.102" > output.txt
sed -n 's/^192\\.168\\.1\\.102/&/p'
sed比我的机器上的grep快
我认为使用grep是最好的解决方案,但是如果您想使用sed,您可以这样做:
sed -e '/^192\.168\.1\.102/b' -e 'd'
如果正则表达式匹配,则b命令将跳过所有后续命令,因此d命令将删除正则表达式不匹配的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.