从.csv日志文件的文本文件中搜索 IP,如果找到,则在其旁边添加新列



我需要一个 shell 脚本,它从.csv日志文件中的文本文件中查找 IP 地址,如果找到结果,它将在 csv 文件的右侧创建一个新列,称其为"可疑">

到目前为止,我想出了这个命令:

cat *.csv | grep --color=always -z -w -f 'list.txt' | sed 's/^/SUSPICIOUS, /' > *.csv

这有两个问题:

  1. 它在每一行上创建可疑列

  2. 它在左侧而不是右侧创建新列

(如果我使用正则 grep 表达式,它只会保存包含这些 IP 地址的结果,我需要日志的每一行(

这似乎更容易用awk做到。将文本文件加载到关联数组的键中。然后读取 CSV 文件,并测试 IP 字段是否包含在数组中。

awk -i inplace -F, -v OFS=, '
NR==FNR { a[$0]++; next } # Put lines from list.txt into array
a[$8] { print $0 "SUSPICIOUS" } # Test if IP in current row is in array
{ print }' inplace=0 list.txt inplace=1 *.csv # Otherwise print row normally

这使用 GNU awk 的就地扩展,因此它可以将结果写回输入文件。

相关内容

最新更新