2015-06-17 2 views
2

Я пытаюсь выяснить команду linux shell, которая отобразит часть поля из журнала, удовлетворяющего условию другого поля.команда linux cut с условием значения поля

Пример лог-файл:

2013-04-15;[email protected];[email protected];outgoing;24;headline 
2013-04-15;[email protected];[email protected];incoming;0;chat 
2013-04-15;[email protected];[email protected];outgoing;26;headline 
2013-04-15;[email protected];333333;incoming;12;chat 
2013-04-16;[email protected];555555;incoming;0;chat 

Я попытался отобразить только уникальные номера из области 2 и 3, разделенных разделителем «;» где поле 5 = 0

Образец ожидаемого результата:

111111 
333333 
444444 

ответ

2
$ awk -F";" '$5!=0{print $2, $3}' fields.txt | grep -o '[0-9]\+' | sort -u 
111111 
333333 
444444 

Объяснение: извлекать столбцы 2 и 3 на основе значения столбца 5; соответствуют только номерам; устранить дубликаты

+0

Ничего себе, это сработало так, как будто я хотел. Большое спасибо. –

+0

Добро пожаловать. Пожалуйста, отметьте это как ответ, если это то, что вы искали. – karakfa

0
grep -Po '\d+(?=([^;]*;)?[^;]*;[^;]+;[^0][^;]*;[a-z]+$)' logfile|sort -u 

Должно быть понятно. лол.

+0

Это работает, но у меня его нет. Я как бы новичок в Linux, поэтому, если вы любезно предоставляете объяснение, которое было бы лучше. Заранее спасибо. –

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