如何将 cat/grep 字符串分成几个以分号分隔的文件来捕获 mac 地址。示例:
文件夹:
/home/acl
acl 文件:
acl1
acl2
字符串格式信息 acl 文件:
a;mac address;ip address;hostname
示例 acl1 文件:
a;14:cc:20:00:73:02;192.168.1.150;CONTA1
示例 acl2 文件:
a;13:aa:10:10:74:01;192.168.1.140;FINANCE2
尝试
grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' acl1
输出(预期结果)
13:aa:10:10:74:01
有没有简单的方法将这个结果整合到变量中?
例子:
acl="grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' acl*"
谢谢
PD:很难选择。两种解决方案都是正确的,但我必须选择一个。谢谢大家
答案1
提取 mac,使用awk
和;
作为分隔符
awk -F\; '{print $2}' acl?
在哪里
-F\;
用作;
分隔符,;
需要转义。'{print $2}'
打印第二个字段
放入 var 使用
var=$(awk -F\; '{print $2}' acl?)
或者
var=$(awk -F\; '{printf "%s%s",sep, $2; sep="," ;}' acl?)
"$var"
并在命令行中使用。
请注意,这取决于如何向 提供多个 mac arpfilter
。
答案2
此外阿克玛您可以使用的回应参数在多个 acl 文件中的一行中更改 arptables:
awk -F\; '{print $2}' acl? | xargs -I {} arptables -t mangle -A PREROUTING --source-mac {} -j ACCEPT