使用 awk 进行文本处理
在这一步中,你将学习如何使用 awk
完成更高级的文本处理任务。
首先,我们创建一个名为 log.txt
的文件,内容如下:
2023-04-01 10:30:00 INFO: This is a log message.
2023-04-02 11:45:00 ERROR: An error occurred.
2023-04-03 14:20:00 INFO: Another log message.
2023-04-04 16:10:00 WARN: A warning message.
现在,我们使用 awk
提取每行的日期、时间和日志级别:
awk -F'[ :]' '{print $1, $2, $3, $4, $5, $6}' log.txt
示例输出:
2023-04-01 10 30 00 INFO This
2023-04-02 11 45 00 ERROR An
2023-04-03 14 20 00 INFO Another
2023-04-04 16 10 00 WARN A
在这个例子中,-F'[ :]'
选项告诉 awk
使用空格和冒号作为字段分隔符。{print $1, $2, $3, $4, $5, $6}
动作打印每行的前六个字段,分别对应日期、时间和日志级别。
你还可以使用 awk
过滤和转换数据。例如,我们只打印日志级别为 "ERROR" 的行:
awk -F'[ :]' '$5 == "ERROR" {print $1, $2, $3, $4, $5, $6}' log.txt
示例输出:
2023-04-02 11 45 00 ERROR An
在这个例子中,$5 == "ERROR"
模式选择了第五个字段(日志级别)为 "ERROR" 的行,{print $1, $2, $3, $4, $5, $6}
动作打印了选中的字段。