$ cat logfile
1;1472223253;frank;12344;1472224386
2;1472223265;andrew;shop;
3;1472225515;frank;12345;1472225531
4;1472225526;joe;12344;1472225534
我可以运行什么来获取包含 1472225000 和 1472226000 之间数字的行?
3;1472225515;frank;12345;1472225531
4;1472225526;joe;12344;1472225534
答案1
awk -F';' '$2 > 1472225000 && $2 < 1472226000' < logfile
告诉 awk 使用分号作为字段分隔符(-F';'
-- 单引号是为了防止 shell 将分号视为命令分隔符;您可以使用-F\;
),然后选择字段 2 的值介于您提供的值之间的行。选择一行后,默认操作是打印它。
编辑以将解决方案概括为任何进行比较的字段资格:
awk -F';' '{
flag=0;
for (i=1;i<=NF;i++) if ($i > 1472225000 && $i < 1472226000) flag=1;
if (flag) print
}' < logfile