我有一个很大的apache日志文件,我需要对其进行过滤并仅保留(在新文件中)来自某个IP的日志:192.168.1.102
我尝试使用此命令:
sed -e "/^192.168.1.102/d" < input.txt > output.txt
但是“/ d”会删除这些条目,我需要离开它们。
感谢。
答案 0 :(得分:2)
如何使用grep
?
cat input.txt | grep -e "^192.168.1.102" > output.txt
编辑:如下面的评论中所述,为了使其正确,必须转义正则表达式中的点。正则表达式中的转义是使用反斜杠完成的:
cat input.txt | grep -e "^192\.168\.1\.102" > output.txt
答案 1 :(得分:2)
sed -n 's/^192\.168\.1\.102/&/p'
sed比我机器上的grep更快
答案 2 :(得分:0)
我认为使用grep是最好的解决方案,但是如果你想使用sed,你可以这样做:
sed -e '/^192\.168\.1\.102/b' -e 'd'
如果正则表达式匹配,则b命令将跳过所有后续命令,因此d命令将删除正则表达式不匹配的行。