繁体   English   中英

如何在Linux中使用bash从文本文件中提取行?

[英]How do I extract lines out of a text file using bash in linux?

我想使用bash脚本从Linux中的文本文件中提取出包含MAC地址的 任何行 ,然后在可能的情况下将其保存到另一行中?

有使用sed和grep删除行的不同示例,但是到目前为止,我还无法使它们对我有用。 我总体上对编程不太好,所以可能比我认为容易得多。

我从中提取以下文本文件的示例。

猫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脚本将它们发送到另一个文本文件,那将是一个很大的帮助。

谢谢

使用grep可能是最简单的:

grep -E '(..:){5}..' < infile.txt > outfile.txt

值得注意的是,这在强制执行匹配方面有些放松,而不是严格要求仅匹配有效的mac地址,但是此表达式也更简单,并且很可能就足够了。

尝试:

grep -E "(..:){5}.." file

尝试这个:

grep '([0-9A-F]{2}[:-]){5}([0-9A-F]{2})' < in.txt > out.txt

尝试这样做,这是最可靠,最强大的解决方案=)

grep -E '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b' < file > newfile

对于初学者来说,可以使用grep,然后可以转到sed,然后可以学习awk。 看到这是您的第一个问题,发布它肯定比Google花费更多的努力:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM