目录
一、问题描述
最近,检查服务器 ssh 日志时,发现 auth.log 中有很多 “POSSIBLE BREAK-IN ATTEMPT”。
我想从这个文件中摘取出包含“POSSIBLE BREAK-IN ATTEMPT”的行内容,但是内容很分散,条数有几百条,手动一行一行复制粘贴太浪费时间,怎么办呢?
首先,肯定是在我们的CSDN搜索,还问了问C知道。
我看了下,貌似没有得到我想要的内容,所以想到了ChatGPT。
二、ChatGPT问答
这里分享提问的方法:
第一,清楚描述问题。把你的问题尽量描述清楚,如我的第一问。
第二,有疑问再追问。不懂就问。
第三,有新想法,也请再追问。
如此循环。
下面就是我的问和ChatGPT的答。
我认为很人性化,主要是帮我整理好了知识点,是我想看到的内容。
【娟娟问】
linux系统,指定文件,用什么命令能查找文件中符合要求的内容并打印到控制台
【AI答】
【娟娟点评】
这个回答提供了很多选择,我选择使用sed,下面继续追问。
【娟娟问】
解释一下后面这个命令是如何执行的:sed -n '/pattern/p' filename
【AI答】
【娟娟点评】
这里帮我解释了命令的含义,我觉得很适合。
所以我决定用这个命令,具体执行看第三点。
又因为我想将打印的内容输出到一个文件里,所以我继续追问了。
【娟娟问】
用sed,在指定文件中查看匹配的行,并输入到指定文件,如何操作
【AI答】
【娟娟点评】
这次回答得特别棒,解释清晰明了,还举例说明,最后还说了注意事项。
这个注意事项,刚好也是我需要了解的,因为我多次执行这个命令时,我想一直覆盖该文件。
好了,到此,我想要的内容基本都有了,只待我实践和得出结论。
三、我的实践和结论
1、命令执行环境
ubuntu14.04
2、实践
第一步,将 /var/log/auth.log 中,包含 POSSIBLE BREAK-IN ATTEMPT 的行内容打印到控制台。
命令:
sed -n '/POSSIBLE BREAK-IN ATTEMPT/p' /var/log/auth.log
结果:
第二步,我发现内容太多了,将内容输出到 result.txt 文件。
注:如果想重复输出到这个文件,就重复执行下面的命令。
命令:
sed -n '/POSSIBLE BREAK-IN ATTEMPT/p' /var/log/auth.log > result.txt
结果:
3、结论
ChatGPT杠杠滴,帮我解决了问题,得到的结果我很满意。
至此,我收获了一个解决方案:
linux系统,使用sed在指定文件查找匹配内容并输出。
我是程序员娟娟,
致力将工作中遇到的问题和解决方案记录下来,
分享给更多需要的同行。
如果对你有帮助,不妨点个关注吧!