这是我从程序中获得的确切输出:
#Meaningless output
[TABL]
BSSID
4c:e6:78:e3:4e:58
a0:8b:16:e3:3a:42
ADMAC=a1:3c:24:e5:2e:22
ADMAC=.......
#Meaningless output
我只想捕获BSSID列以及它的mac地址而不是ADMAC值或任何其他值。我怎样才能使用bash(或grep或sed或awk,任何东西)?谢谢。
答案 0 :(得分:2)
awk
救援!
$ awk '/BSSID/{p=1} p&&!NF{exit} p' file
BSSID
4c:e6:78:e3:4e:58
a0:8b:16:e3:3a:42
在模式匹配后打印,直到空行。
或者,更简单,但最后会得到空行。
$ awk '/BSSID/,/^$/' file
BSSID
4c:e6:78:e3:4e:58
a0:8b:16:e3:3a:42
<- empty line here ...
过滤最后一个空行,可以添加条件
$ awk '/BSSID/,/^$/{if(NF) print}'
请注意,第一种选择是最灵活的,也是首选的选择。
答案 1 :(得分:0)
试试这个。它使用你的例子在Mac上工作。
cat output.txt | awk '/BSSID/,/ADMAC/'| grep -v ADMAC
答案 2 :(得分:0)
告诉grep在比赛结束后显示两条线并在1场比赛后停止。
grep -m1 -A2 "^BSSID$" output.txt
答案 3 :(得分:0)
sed
救援!
由于要求仅包括MAC地址(必须包括冒号,句点或破折号),因此以下示例输入是合理的:
sed -n '/^BSSID/,/^ *$/ {/[:.-]/p;}'
答案 4 :(得分:-1)
如果你有awk尝试:
awk '{/BSSID/,/ADMAC/ print}' output.txt