面试题答案
一键面试#!/bin/bash
# 使用awk命令筛选ERROR级别的日志信息并输出到error_log.txt
awk -F '|' '$2 == "ERROR" {print $0}' large.txt > error_log.txt
优化措施及原因
- 选择
awk
:awk
是专门用于文本处理的工具,对于这种按字段分隔并基于字段内容筛选的任务非常高效。它逐行读取文件,不需要将整个大文件加载到内存中,因此在处理大文件时能有效减少内存占用,提高性能。 - 字段分隔符设置:通过
-F '|'
指定|
为字段分隔符,这样可以方便地通过字段编号(如$2
表示第二个字段)来获取日志级别,避免了复杂的字符串处理,提高处理速度。 - 逐行处理:
awk
默认逐行处理文本,处理完一行后就释放相关内存,对于超大文件的处理极为友好,不会因内存耗尽导致程序崩溃。