我有两个文件。
A. 密钥.txt
<string>
<string>
..
..
B.Hellos.txt
<string> <ip address> <ip address>
<string> <ip address> <ip address>
..
..
我想要执行任务 - 如果在中hellos.txt
找到字符串(列1) keys.txt
,则添加防火墙规则以允许这些 IP 地址的数据包。
我已尝试grep -v -F -x -f file1 file2
但未能获得正确的输出。
编辑:我已更新以使用 awk,但是我无法将规则添加到 iptables。
这将打印出匹配的行
sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt
尝试向 iptables 添加规则,但没有成功
sudo awk 'FNR==NR{a[$1];next}($1 in a){iptables -I INCOMING -j -s$2 ALLOW}' keys.txt hellos.txt
答案1
正如我在编辑中提到的那样,
以下命令可用于匹配文件中的通用字符串
sudo awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt
为了进一步改善输出,请使用awk -v OFS='\n' '
管道选项将 IP 地址打印到文件中。从此以后,向 iptables 添加规则就很简单了。
awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt | awk -v OFS='\n' '{ print $2, $3 }'> improved_address.txt