這里完全是新手……抱歉。
我有一個.txt帶有 IP 的檔案(逐行):
195.678.333.23
54.221.67.1
32.221.67.2
32.221.67.3
56.221.67.4
32.221.67.5
243.221.67.6
23.221.67.7
34.221.67.8
34.221.67.9
(我需要遍歷大約 200 個 IP)
我需要閱讀每一行,然后搜索多個 csv 檔案以找到這些 IP 以查看它們是否存在。
CSV 是這樣的:
3am452525-1;2021-08-25T07:49:03.188353 00:00;195.678.333.23;234.45.78.232;\"pass rscore=16\";[email protected] resolve=ok [email protected] routes= notroutes=alfgdfgd,pr_sdt_Spsdgsgdhidfhgd;sxdgdsgs.hotmail.com;ECDHE-RSA-AES256-GCM-SHA384;NOT;[email protected];ENV_RCPT:dgsgsgsg@{hotmial.com,ENV_RCPT_VERIFY:1;ATTACH_NAME:sdgdsgsgsof.pdf,ATTACH_MIME:application/pdf,ATTACH_TYPE:pdf,ATTACH_OEXT:pdf,ATTACH_CORRUPT:0,ATTACH_PROTECT:0,ATTACH_SIZE:20099;;;;;;sdgsg_fhdh_dfhdh;asrsar_asrar;0;0;0;0;0;0;0;df;8.12.0-2107140000;main-2108250046;;;;sdgsg;;;;none;none;rule=sdgsgs action=ssdgsg-sgddsgr Subject default="sdgs $reyey";rule=odfhddh action=add-header dfhdhdReason="$SpamReason";;;;;;SEND_QID:4363636363,SEND_PROFILE:mail,SEND_RCPTS:dhdfhh;1;1;default_uioyuouyo_RcptInOrg;30677;uMwaF_x-00m7xOj-rho8njCPLr_QKYh3;<B8967386-0450-4709-A382-66D68CE4F3A6@rtce-efax1>;"zdgddadyhadyhad";0.283;1;0.856;Fax-Tdhfdm@urydyd;sdhdfhdhdhfd
IP 存在于$3CSV 檔案的欄位中,但如果我找到了 IP,那么我想要整行作為輸出。
有人可以幫忙嗎?
我有累的事情,比如:
cat /tmp/IPs_filename.txt | while read line; do grep ${line} csvlog.436334.csv; done
但沒有幫助。
謝謝
uj5u.com熱心網友回復:
awk 對我來說似乎最簡單。
awk -F';' 'NR==FNR{lst[$0]; next} $3 in lst{print}' IPs.txt csv
uj5u.com熱心網友回復:
grep -f <txt_file_with_ip_addrs> csv_file1 csv_file2 ...
從grep的手冊頁:
-f, --file=FILE take PATTERNS from FILE
由于 IP 地址包含句點(在正則運算式中解釋為“任何字符”),您可能還想使用
-F, --fixed-strings PATTERNS are strings
以便將 IP 地址解釋為文字字串而不是正則運算式。
uj5u.com熱心網友回復:
在 bash 中,沒有回圈:這里的關鍵是使用-fgrep 選項,以及程序替換來制定模式。
# read the ips into an array
mapfile -t ips < IPs.txt
# grep to find lines with ip in 3rd semicolon-separated field
grep -E -f <(printf '^[^;] ;[^;] ;%s;\n' "${ips[@]}") CSV.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336413.html
上一篇:遍歷for回圈時無法一一列印值
下一篇:Java問題中的While回圈
