小编Nik*_*hil的帖子

awk 如果条件不起作用如果使用 ||

我正在搜索编写脚本来 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)

awk

0
推荐指数
1
解决办法
101
查看次数

awk 命令用特定值替换子字符串

我有一个平面文件,其中的字段中包含从位置 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

0
推荐指数
1
解决办法
2625
查看次数

标签 统计

awk ×2