按列值过滤数据

按列值过滤数据

我只想搜索列以03:(hours) 开头的行,但在使用下面的命令时,显示 value 包含的所有行03。这是一个例子,文件中的数据非常大。

awk '{print $2 " " $3}' logfile | grep "03:"

数据:

05 00:03:12 0.05
05 00:28:03 0.05
05 00:33:12 0.09
05 03:03:12 0.09
05 03:08:12 0.05
05 03:13:12 0.05
05 03:18:12 0.05
05 03:23:12 0.027

答案1

如果像示例数据中那样,小时之前总是有空格,则可以使用grep

grep " 03:" file

答案2

awk '$3 ~ /^03/ {print $2 " " $3}' logfile

应该做你想做的事; $3 ~ /^03/ 检查输入文件 ($3) 中的第三列是否以 (^) 03 开头。其余部分是 awk 模式匹配语法 (~ /pattern/)。请注意,这也节省了使用 grep 的开销(在编程术语中是 1 个循环而不是 2 个循环)。

答案3

#awk '{print $2 " " $3}' logfile | grep "03:" | uniq -u

相关内容