我想使用bash脚本从Linux中的文本文件中提取包含 MAC地址的任意行,然后如果可能的话将其保存到另一行?
有使用sed和grep删除行的不同示例,但到目前为止我还没能让它们对我起作用。我对编程一般不太好,所以它可能比我想的要容易得多。
我正在从中提取的文本文件示例。
cat Test.txt
spawn ssh -l user x.x.x.x -p 22 "arp"
DD-WRT Mega
Release xx/xx/xx (SVN revison:xx)
root@x.x.x.x password:
Device1 (x.x.x.x) at xx:xx:xx:xx:xx:xx [ether] on br0
Device2 (x.x.x.x) at xx:xx:xx:xx:xx:xx [ether] on br0
Device3 (x.x.x.x) at xx:xx:xx:xx:xx:xx [ether] on br0
以下是我正在寻找的结果。
的Result.txt
Device1 (x.x.x.x) at xx:xx:xx:xx:xx:xx [ether] on br0
Device2 (x.x.x.x) at xx:xx:xx:xx:xx:xx [ether] on br0
Device3 (x.x.x.x) at xx:xx:xx:xx:xx:xx [ether] on br0
如果有人知道如何从一个文件中提取包含MAC地址的行,并通过bash脚本将它们发送到另一个文本文件,这将是一个很好的帮助。
感谢您
答案 0 :(得分:3)
使用grep
:
grep -E '(..:){5}..' < infile.txt > outfile.txt
值得注意的是,这在执行匹配方面有点放松,而不是严格只有匹配的有效mac地址,但这个表达式也更简单,并且很可能就足够了。
答案 1 :(得分:1)
尝试:
grep -E "(..:){5}.." file
答案 2 :(得分:1)
试试这个:
grep '([0-9A-F]{2}[:-]){5}([0-9A-F]{2})' < in.txt > out.txt
答案 3 :(得分:1)
尝试这样做,这是最可靠,最强大的解决方案=)
grep -E '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b' < file > newfile
答案 4 :(得分:0)
对于初学者你可以使用grep,然后你可以进入sed,然后你可以学习awk。看到这是你的第一个问题,发布它确实需要比谷歌更多的努力问题:)