linux - 如何使用 grep 和 sed 打印多个字符串?

标签 linux sed grep command

假设我有一个如下所示的日志文件或文本文件

16 Dec 2014 11:20:00 [INFO] com.example.Test.java PlaneName: JetAirways360 This flight just cleaned up
16 Dec 2014 11:22:01 [INFO] com.example.Test.java PlaneName: JetAirways360 This flight is in queue
16 Dec 2014 11:23:02 [INFO] com.example.Test.java PlaneName: JetAirways360 This flight passengers loaded
16 Dec 2014 11:24:03 [INFO] com.example.Test.State.java PlaneName: JetAirways360 This flight ready to take off
16 Dec 2014 11:25:00 [INFO] com.example.Test.State.java PlaneName: JetAirways360 This flight took off
17 Dec 2014 11:25:00 [INFO] com.example.Test.java PlaneName: JetAirways360 This flight returned back

现在想象一下,我这个日志文件已经完全填满了很多航类信息。听说要查找特定的航类信息。现在我想 grep 查看以下详细信息

16 Dec 2014 11:20:00 This flight just cleaned up
16 Dec 2014 11:22:01 This flight is in queue
16 Dec 2014 11:23:02 This flight passengers loaded
16 Dec 2014 11:24:03 This flight ready to take off
16 Dec 2014 11:25:00 This flight took off
17 Dec 2014 11:25:00 This flight returned back

如何使用 grep 和 sed 命令执行此操作?

最佳答案

这可能对你有用(GNU sed):

sed -rn '/JetAirWays360/s/(.{21}).{54}/\1/p' file

这会将文件的第一部分保存在反向引用中,并用它替换剩余文件的一部分。

关于linux - 如何使用 grep 和 sed 打印多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512758/

相关文章:

c - 对大页面使用 mmap 和 madvise

c++ - boost 字符串的分配性能

python - 为什么这个 sed 模式在 python 循环中不起作用?

linux - AWK 处理数据直到下一次匹配

linux - 在 Linux 中使用 sed 从日志文件中提取行

linux - 读取/proc中的虚拟文件内容

linux - Bash 不读取文件到变量

linux - 处理接收 X11 SelectionNotify 事件,xev 不显示该事件;为什么会这样?

linux - 如何从匹配行之后删除文件中的所有行?

regex - 如何在命令行管道中匹配 IPv6 地址