如何 cat/grep 字符串分号分隔

如何 cat/grep 字符串分号分隔

如何将 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

相关内容