awk - 选择第 n 列
问题描述
打印第 n 列并删除一些额外的字符
猫测试.log
12-22-2018-00.log:[1545418720] 服务器警报:irqz1;来自服务器的响应(以毫秒为单位):387
12-22-2018-00.log:[1545118720] PING ALERT: irqz2;服务器自 902 天以来一直在运行
grep -i 'SERVER' test.log |awk '{print $1,$NF}'
12-22-2018-00.log:[1545418720] 387
grep -i 'PING' test.log |awk '{print $1,$NF-1}'
12-22-2018-00.log:[1545118720] 902
我想要的实际结果是:
Server 1545418720 387
Ping 1545118720 902
因此,在服务器警报的情况下,它将选择 unix 时间戳和最后一列,而在 ping 警报的情况下,它将选择 unix 时间戳和右侧第二列。
解决方案
您能否尝试关注(GNU awk
)。
awk -v IGNORECASE=1 '/server alert/{gsub(/.*\[|\]$/,"",$1);print $1,$NF;next} /ping alert/{gsub(/.*\[|\]$/,"",$1);print $1,$(NF-1)}' Input_file
或者
awk 'tolower($0) ~ /server alert/{gsub(/.*\[|\]$/,"",$1);print $1,$NF}' Input_file
AND
awk 'tolower($0) ~ /ping alert/{gsub(/.*\[|\]$/,"",$1);print $1,$(NF-1)}' Input_file
推荐阅读
- azure-ad-b2c - 使用 msal.js 强制对现有用户会话进行重新身份验证
- ruby-on-rails - ArgumentError: Index name ... is too long; 限制为 62 个字符
- ruby-on-rails - 机架应用程序错误处理请求 {HEAD /health } SystemStackError:堆栈级别太深
- c# - 使用实体框架中的各种表实现“连接”
- spring-boot - 字符串引导 REST 安全错误:类型=禁止,状态=403
- c# - 单元测试。如何在测试中打开表格?
- java - 如何使用 selenium webdriver 代码处理基本身份验证(Rest API- Post Request)?
- python - Python 组合和产品
- elasticsearch - 优化弹性查询
- r - XML 导入 INSPIRE GIS 数据