1

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

以下は、結果として私が探しているものです。

結果.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スクリプトを介して別のテキストファイルに送信する方法を知っている人がいれば、非常に役立ちます。

ありがとうございました

4

5 に答える 5

3

おそらく最も簡単に使用できますgrep

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

これは、有効な MAC アドレスのみが一致するという厳密なものとは対照的に、一致を強制するという点で少し緩和されていることに注意してください。

于 2013-04-03T16:43:31.480 に答える
1

これを試してみてください。これが最も信頼性が高く、最強のソリューションです =)

grep -E '\b([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}\b' < file > newfile
于 2013-04-03T16:55:18.550 に答える
1

試してみてください:

grep -E "(..:){5}.." file
于 2013-04-03T16:44:38.280 に答える
1

これを試して:

grep '([0-9A-F]{2}[:-]){5}([0-9A-F]{2})' < in.txt > out.txt
于 2013-04-03T16:45:17.800 に答える