awk 条件未正常工作

awk 条件未正常工作

这些是我正在应用的数据awk

~$ cat lab4.data
Mike Harrington: (510) 548-1278:250:100:175
Christian Dobbins: (408) 538-2358:155:90:201
Susan Dalsass: (206) 654-6279:250:60:50
Archie McNichol: (206) 548-1348:250:100:175
Jody Savage: (206) 548-1278:15:188:150
Guy Quigley: (916) 343-6410:250:100:175
Dan Savage: (406) 298-7744:450:300:275
Nancy McNeil: (206) 548-1278:250:80:75
John Goldenrod: (916) 348-4278:250:100:175
Chet Main: (510) 548-5258:50:95:135
Tom Savage: (408) 926-3456:250:168:200
Elizabeth Stachelin: (916) 440-1763:175:75:300

我需要查找最后一个值小于的行75。但条件$5<75不起作用。以下是awk我使用的命令示例:

awk -F: '$5 < 50 {print $0}' lab4.data 

以下是我通过上述命令得到的输出:

~$ awk -F: '$5 < 50 {print $0}' lab4.data 
Mike Harrington: (510) 548-1278:250:100:175
Christian Dobbins: (408) 538-2358:155:90:201
Archie McNichol: (206) 548-1348:250:100:175
Jody Savage: (206) 548-1278:15:188:150
Guy Quigley: (916) 343-6410:250:100:175
Dan Savage: (406) 298-7744:450:300:275
John Goldenrod: (916) 348-4278:250:100:175
Chet Main: (510) 548-5258:50:95:135
Tom Savage: (408) 926-3456:250:168:200
Elizabeth Stachelin: (916) 440-1763:175:75:300

答案1

您必须使用以下 awk 脚本

awk 'BEGIN{FS=":"}{if($5<75) print $0;}' lab4.data

在此处输入图片描述

  • 输入数据非常繁琐。下次请考虑将终端输出粘贴为文本

答案2

您的输入文件 lab4.data 可能是在 Windows 中创建的,并且具有 CRLF 行尾。

如果输出

awk -F: '{print $NF}' lab4.data | hexdump -c

其中包含“\r \n”,而不是用于换行的“\n”,情况就是这样。然后您可以将文件转换为 UNIX 格式,请参阅这里,并使用转换后的文件作为 AWK 的输入。

相关内容