Intereting Posts
Что такое команда Linux, в которой перечислены только USB-устройства хранения данных? Приостановка в GNU параллельной и ожидающей символа Можно ли запустить мою систему с флеш-накопителя? awk: печатать дубликаты из двух файлов Каков наиболее подходящий способ анализа значений из этого вывода? Использование разделителя табуляции в срезе в Unix Shell Scripting Symial aliasing файлы в подкаталогах без изменения текущего каталога ssh в учетную запись, у которой нет домашней директории Могу ли я заставить столбцы испускать пробелы вместо вкладок? Запустить скрипт на / dev / tty-доступ Bad Substition как заставить / bin / bash как оболочку? Где перенести сначала, когда из свободного места на Cent OS Web Server? grep точный блок строк (содержимое файла1) из файла2 Тестирование, из сценария, если звуковые устройства молчат? Что-то не так с использованием dnsmasq в качестве сервера dhcp вместо isc-dhcp-server?

Использование grep и поиск уникальных вхождений

У меня есть текстовый файл этого типа, и я бы поискал строки, содержащие строку Validating Classification а затем получал однозначно сообщенные ошибки. Я не знаю типов возможных ошибок.

Входной файл:

 201600415 10:40 Error Validating Classification: error1 201600415 10:41 Error Validating Classification: error1 201600415 10:42 Error Validating Classification: error2 201600415 10:43 Error Validating Classification: error3 201600415 10:44 Error Validating Classification: error3 

Выходной файл

 201600415 10:40 Error Validating Classification: error1 201600415 10:42 Error Validating Classification: error2 201600415 10:43 Error Validating Classification: error3 

Могу ли я достичь этого с помощью grep, труб и других команд?

Вы можете использовать эту команду, предполагая, что ваши данные находятся в файле test

 uniq -f 2 <test 

Вам нужно будет отбросить временные метки, но «grep» и «sort -unique» вместе могут сделать это за вас.

 grep --only-matching 'Validating Classification.*' | sort --unique 

Таким образом, grep -o будет показывать только те части линии, которые соответствуют вашему регулярному выражению (именно поэтому вам нужно включить .* Чтобы включить все после соответствия «Validating Classification»). Затем, как только у вас есть список ошибок, вы можете использовать sort -u чтобы получить только уникальный список ошибок.

Я бы пошел с awk

 awk -F: '{ if (!a[$3]++ ) print ;}' file 
  • -F: использовать: как разделитель
  • $3 – шаблон после :
  • !a[$3]++ гарантируют истинность только при первом появлении