2016-01-22 2 views
1

Выход коды заготовленная разделены запятойКак извлечь строки с разными кодами выхода?

Последние 2 поля код выхода из 2-х разных версий сценария

/opt/a/b/c,parameter,a b c,3,1 
/opt/a/d/e,parameter,a b c,1,1 
/opt/a/b/d,parameter,0,0 
/opt/a/e/c,parameter,0,1 

Диапазон код выхода от 0 до 20 Как извлечь линии с различным выходом коды?

Я устал делать:

cat log|grep -v ,0,0|grpe -v ,1,1|grep -v ,2,2 

Благодаря

ответ

3

Использование awk:

awk -F , '$NF != $(NF-1)' log 

Установите разделитель полей (FS) к , с -F ,. NF - количество полей в строке. $NF - значение последнего поля на линии. $(NF-1) - значение второго для последнего поля на линии.

awk По умолчанию действие заключается в печати строки (то есть {print}). Таким образом, скрипт awk должен вернуть значение truth-y, когда два последних поля отличаются. Поэтому мы сравниваем их.

Использование sed:

sed '/,\([0-9]\+\),\1$/d' log 

d далить любые линии, которые соответствуют шаблону , с последующим некоторым количеством цифр ([0-9]\+) и захватить это число (\(/\) оберточного), то другой , и тот же номер мы уже сопоставили (\1 для первой группы захвата). Это оставляет sed печать каждой другой линии (те, которые не совпадают).

+0

Удивительный, awk отлично, я начну изучать некоторые! – Gang

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