Всем привет. Помогите грепнуть инфу из файла.
Есть файл, в котором очень много строк. нужно как то вытащить из него инфу, при этом чтобы не выводить дубликаты.
Допустим надо вытащить инфу по 10.130.7.0-10.130.7.253
то есть чтобы выдал все значения 10.130.7.* и не выводить дубликаты...
Всего имеем 9 столбцов ($1-$9), работаем со столбцом $2 (FromIp). Аналогично можно работать со столбцом $4 (ToIp). Либо сразу по двум, сдвигая их в конец таблицы и изменяя уcловия 'сортировки | уникальности'.
Для столбца $2 (FromIp)...
uniq работает с разделителем "пробел", формат csv - разделение полей "запятой". Заменим все запятые пробелами, НО! Первое поле и так содержит пробел, поэтому заменим сначала все пробелы на "-" и только после этого, получив цельный столбец $1 заменим запятые на пробелы:
text
clear; cat ip.csv | tr ' ' '-' | tr ',' ' '
В uniq можно сравнивать строки, начиная с определённого столбца. Чтобы сравнение было чистым (только столбец №2), без учета последующих столбцов (слева на право), поменяем нужный столбец ($2) с последним ($9), чтобы он был финальным для сравнения uniq и введём признак уникальности по этому столбцу (теперь уже $9) с предварительной сортировкой строк (-f8, потому, что $9 - следующий):
Всего имеем 9 столбцов ($1-$9), работаем со столбцом $2 (FromIp). Аналогично можно работать со столбцом $4 (ToIp). Либо сразу по двум, сдвигая их в конец таблицы и изменяя уcловия 'сортировки | уникальности'.
Для столбца $2 (FromIp)...
uniq работает с разделителем "пробел", формат csv - разделение полей "запятой". Заменим все запятые пробелами, НО! Первое поле и так содержит пробел, поэтому заменим сначала все пробелы на "-" и только после этого, получив цельный столбец $1 заменим запятые на пробелы:
text
clear; cat ip.csv | tr ' ' '-' | tr ',' ' '
В uniq можно сравнивать строки, начиная с определённого столбца. Чтобы сравнение было чистым (только столбец №2), без учета последующих столбцов (слева на право), поменяем нужный столбец ($2) с последним ($9), чтобы он был финальным для сравнения uniq и введём признак уникальности по этому столбцу (теперь уже $9) с предварительной сортировкой строк (-f8, потому, что $9 - следующий):
Здесь вырезается поле -f2, обязательно сортируется перед uniq (uniq работает только с соседними записями). Сортировка IP-адресов описана здесь. После сортировки поиск дубликатов.
Кстати, чтобы не цитировать большие сообщение в ответах, можно выделить нужную строчку/абзац, отпустить ЛКМ и появится черная подсказка "Цитировать выделенное". Ну это так, для экономии пространства и читабельности.