2014-11-07 2 views
1

У меня есть этот конкретный файл:Экспорт информации из текстового файла в Linux с Баш скрипт

Client 1: MAC 00:03:52:49:99:55 
First  : Fri Nov 7 09:50:11 2014 
Last  : Fri Nov 7 09:51:06 2014 
-- 
Client 1: MAC 00:03:52:04:88:55 
First  : Fri Nov 7 09:51:44 2014 
Last  : Fri Nov 7 09:51:44 2014 
-- 
Client 2: MAC 00:03:52:49:99:55 
First  : Fri Nov 7 10:50:10 2014 
Last  : Fri Nov 7 10:50:10 2014 
-- 
Client 3: MAC 00:03:52:04:66:55 
First  : Fri Nov 7 09:51:30 2014 
Last  : Fri Nov 7 09:51:30 2014 
-- 

Из этого файла со многими дубликатов хотите создать новый файл, как это:

00:03:52:49:99:55 
First  : Fri Nov 7 09:50:11 2014 
Last  : Fri Nov 7 09:51:06 2014 
First  : Fri Nov 7 09:50:11 2014 
Last  : Fri Nov 7 09:51:06 2014 
00:03:52:04:88:55 
First  : Fri Nov 7 09:51:44 2014 
Last  : Fri Nov 7 09:51:44 2014 
00:03:52:04:66:55 
First  : Fri Nov 7 09:51:30 2014 
Last  : Fri Nov 7 09:51:30 2014 

Как Я могу искать с Bash Script файл с помощью For-Loop? Важно, чтобы в цикле не было более 1 записи для MAC-адреса. MAC должен быть уникальным.

да я попробовал все в этот день:/

#!/bin/bash 
array=$(cat Kismet-20141107-09-48-19-1.nettxt | grep Client -A 3 | grep -v Manuf) 
echo "Array size: ${#array[@]}" 
echo "Array items:" 
for item in ${array[*]} 
    do 
    if [ $item -eq 3 ]; then 
     echo "$array[$item]" 
    fi 
done 

нет, это не является обязательным требованием использовать баш .. если у вас есть другие инструменты, я постараюсь это!

+0

Пытались ли вы что-нибудь сами? Вы застряли в чем-либо в частности? Это требование, которое вы делаете с помощью встроенной функции bash или можете использовать такой инструмент, как awk? –

ответ

0

Попробуйте это:

Shell> cat test1 
#!/bin/bash 

MACS=(`grep Client file|awk '{print $4}'|sort|uniq|xargs`) 

for i in `echo ${MACS[*]}`; do 
     echo $i 
     grep $i file -A 2 | grep -vE 'MAC|--' 
done 
Shell> cat file 
Client 1: MAC 00:03:52:49:99:55 
First  : Fri Nov 7 09:50:11 2014 
Last  : Fri Nov 7 09:51:06 2014 
-- 
Client 1: MAC 00:03:52:04:88:55 
First  : Fri Nov 7 09:51:44 2014 
Last  : Fri Nov 7 09:51:44 2014 
-- 
Client 2: MAC 00:03:52:49:99:55 
First  : Fri Nov 7 10:50:10 2014 
Last  : Fri Nov 7 10:50:10 2014 
-- 
Client 3: MAC 00:03:52:04:66:55 
First  : Fri Nov 7 09:51:30 2014 
Last  : Fri Nov 7 09:51:30 2014 
-- 

Выход:

Shell> ./test1 
00:03:52:04:66:55 
First  : Fri Nov 7 09:51:30 2014 
Last  : Fri Nov 7 09:51:30 2014 
00:03:52:04:88:55 
First  : Fri Nov 7 09:51:44 2014 
Last  : Fri Nov 7 09:51:44 2014 
00:03:52:49:99:55 
First  : Fri Nov 7 09:50:11 2014 
Last  : Fri Nov 7 09:51:06 2014 
First  : Fri Nov 7 10:50:10 2014 
Last  : Fri Nov 7 10:50:10 2014 
Смежные вопросы