我正在搜索编写脚本来 grep 一个单词并比较错误的时间。如果时间不等于 01 或 04 那么它应该打印错误时间
grep -e "Socket disconnected" -e "App Server collections connection state[False]" log-2019-10* |
awk '{if ((substr($2,1,2) != "04")) print (substr($2,1,8));}'
Run Code Online (Sandbox Code Playgroud)
15:00:03
19:02:44
19:02:44
21:27:48
21:27:48
20:20:13
01:49:25
01:49:54
Run Code Online (Sandbox Code Playgroud)
但是当我使用
15:00:03
19:02:44
19:02:44
21:27:48
21:27:48
20:20:13
01:49:25
01:49:54
Run Code Online (Sandbox Code Playgroud)
它正在打印所有时间
04:56:55
04:56:55
04:55:25
04:55:25
04:56:26
04:55:27
04:55:28
04:55:24
04:55:24
15:00:03
19:02:44
19:02:44
21:27:48
21:27:48
04:55:22
04:55:22
04:55:25
04:55:25
04:55:24
04:55:24
04:55:25
04:55:25
04:55:24
04:55:24
04:55:24
04:55:24
04:55:24
04:55:24
04:55:25
04:55:25
04:55:28
04:55:28
04:55:24
04:55:24
20:20:13
04:55:24 …Run Code Online (Sandbox Code Playgroud) 我有一个平面文件,其中的字段中包含从位置 314 到 323 的电话号码。现在我想用 来虚拟该字段1234567890。
为此,我尝试使用以下命令,但都抛出错误:
awk '{var=substr($0,314,10);gsub("[0-9]","1234567890",$var); print}' final_phone.txt >final_phone.txt1
Run Code Online (Sandbox Code Playgroud)
致命:grow_fields_arr:fields_arr:无法分配9849885432字节内存(无法分配内存)
第二种情况
awk 'var=substr($0,314,10) { var = "1234567890" }1' final_phone.txt >final_phone.txt1
Run Code Online (Sandbox Code Playgroud)
这有效,但值没有改变。输出保持不变。
有人可以帮我解决这里的语法吗?
在第一种情况下,我尝试将子字符串分配给变量,并且gsub()我想检查数字模式并替换为1234567890.
有人可以帮我弄这个吗
awk ×2