我有一个日志文件,看起来有点像这样grep my_function $LOG_FILE:
[0] my_function took 96.78581194020808 ms
[1] my_function took 82.0779490750283 ms
[2] my_function took 187.79653799720109 ms
[1] my_function took 98.69955899193883 ms
[0] my_function took 10.296131949871778 ms[1] my_function took 2.5152561720460653 ms
[1] my_function took 2.210912061855197 ms
[2] my_function took 3.418975044041872 ms
Run Code Online (Sandbox Code Playgroud)
从这个文件中,我只想提取每行中的数字。通常,我会这样做awk '{print $4}',但此日志包含几行和两个条目。但是,在这里,我有时需要从一行中选择两个单独的条目。我如何使用bash/GNU 工具适当地选择这些?
我在这方面很新。我正在尝试从新文件中的访问日志中提取一些文本。
我的日志文件是这样的:
111.111.111.111 - - [02/Jul/2021:18:35:19 +0000] "GET /api/items HTTP/2.0" 304 0 "https://example.com/some/text/call-log?roomNo=5003" "Mozilla etc etc etc etc"
111.111.111.111 - - [02/Jul/2021:20:35:19 +0000] "GET /api/items HTTP/2.0" 304 0 "https://example.com/some/text/resevation-log?roomNo=4003" "Mozilla etc etc etc etc"
Run Code Online (Sandbox Code Playgroud)
我想在新文件中以以下格式提取。
02/Jul/2021:18:35:19 +0000, call-log, 5003
02/Jul/2021:20:35:19 +0000, resevation-log, 4003
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经成功地执行了这个基本的 awk 命令:
awk '{print $4,$5,",",$11}' < /file.log
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
[02/Jul/2021:18:35:19 +0000] , "https://example.com/some/text/call-log?roomNo=5003"
Run Code Online (Sandbox Code Playgroud)