首页 > 解决方案 > 如何在 Unix 命令的两列中获取相同值的唯一值

问题描述

我有一个巨大的 csv 文件我想知道相同的源 IP 地址和目标 IP 地址的唯一值以及如何转换我的日志计时格式

"Date", "User Information", "Source IP", "Destination IP", "HTTP Status Code", "HTTP Method", "URL", "Receive byte", "Send byte"
"[31/Jul/2018:21:11:55 +0900] ","ayw23","17.248.157.14","17.248.157.14","247","CONNECT","setup.iciwh.com:443","2938","600"

那么比较一下awk的使用呢?

cat file.csv| awk '$6 == $7' 

我喜欢得到这样的输出

2018/7/31 21:11   17.248.157.14  setup.iciwh.com:443

标签: linuxshellunix

解决方案


为了比较您的情况下的值,您应该在您的情况下使用-F选项awk,字段分隔符是,而不是space

awk -F, '{ if( $6 == $7) print "equal" }' test.csv

或者

awk -F,  ' $6 == $7 { print "equal" }' test.csv

另外,因为第一行是标题,你不想在这一行有条件,你可以包括条件NR >1

awk -F,  'NR >1 && $6 != $7 { print $6 $7 }' test.csv

对于日期转换,请查看以下链接。提供了许多建议来实现这一目标

awk 命令转换文件中的日期格式


推荐阅读