2017-01-31 7 views
0

Я довольно новичок в Linux и хотел бы использовать сценарий оболочки для подсчета количества раз, когда определенная строка появляется в параллельных строках текста.номер счета определенной строки в последовательных строках

К примеру, у меня есть журнал с данными, похожими на это:

active node table^M 
-------------------^M 
    pkey vlan master-s/n gateway-s/n gateway-prio  if-name  gateway name advertised ip 
    0x7fff  0   N/A  0xa0600   100   if0  DA2WIBL1-25-io 10.126.144.49 
    0x7fff  0   N/A  0xa0580   100   if0  DA2WIBL1-31-io 10.126.144.51 
    0x7fff  0   N/A  0xa0400   100   if0  DA2WIBL1-28-io 10.126.144.50 
active node table 
------------------- 

Я хочу просто подсчитать количество параллельных линий, содержащих строку: '0x7fff' и написать, что в файл.

Есть ли у кого-нибудь идеи, как разумно подойти к этому? Я знаю некоторые оболочки, ожидающие и похожие языки сценариев.

+0

Что вы имеете в виду под «параллельных линий»? – codeforester

+0

Пожалуйста, добавьте желаемый результат для ввода этого образца в свой вопрос. – Cyrus

+0

Я предполагаю, что вы имеете в виду «В строках между заголовками« active node table », сколько раз появляется 0x7fff» - это правильно? –

ответ

0

Если вы имеете в виду «последовательный» на «одновременно», то вы обычно используете uniq команду группы последовательных строк, uniq -c группировать и сосчитать их одновременно:

cat logfile | awk '{print $1}' | uniq -c | grep '0x7fff' | awk '{print $1}' 

Учитывая содержание логфайл как:

0x7fff  0   N/A  0xa0600   100   if0  DA2WIBL1-25-io 10.126.144.49 
0x7fff  0   N/A  0xa0580   100   if0  DA2WIBL1-31-io 10.126.144.51 
0x7fff  0   N/A  0xa0400   100   if0  DA2WIBL1-28-io 10.126.144.50 
0x8b5f  0   N/A  0xa0600   100   if0  DA2WIBL1-25-io 10.126.144.49 
0x7fff  0   N/A  0xa0400   100   if0  DA2WIBL1-28-io 10.126.144.50 

, выше команда будет производить следующий вывод:

3 
1 
+0

Ну, это определенно является кандидатом на [* бесполезное использование кошки *) (http://porkmail.org/era/unix/award.html) ... –

0

grep "0x7fff" logfilename.log | wc -l

приведенный выше код может помочь найти подсчет количества строк, в которых появляется шаблон или строка valye «0x7FFF».

+0

Спасибо за ответ. Возможно, я не изначально разъяснил, что мне нужно подсчитывать последовательные строки, содержащие шаблон. – SethYes

0
$ awk -v key='0x7fff' '{if($1==key) c++; else {print c; c=0}} 
        END {print c}' file 

тест с использованием образца @ Гудок с

3 
1 

 Смежные вопросы

  • Нет связанных вопросов^_^