2016-10-07 2 views
0

Если бы я был файл, который выглядит следующим образом:Использование AWK и Grep сложить

23.00 33.44 abcd 44.44 abcd12345abcd 
33.00 22.22 qt 44.00 zlkm12345ksda 

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

ответ

4

Что-то вроде этого?

awk '$5 ~ /12345/ { TOT = TOT + $1 } END { print TOT + 0 }' yourFile.txt 

(не на компьютере, так что мой синтаксис может быть откусил.)

Первый бит выбирает строки, которые вы хотите, и обновляет общее время как END бит просто печатает то, что накопилось.

Нет необходимости в grep (почти для всех целей и задач, awk так же хорош, если не лучше), а поиск ограничивается только столбцом, который вы хотите найти.

+1

Возможно, вы захотите добавить 'yourFile.txt' или somesuch в конце. Возможно, вы захотите напечатать 'TOT + 0' в конце, так что, если строки не совпадают, а TOT - пустая строка, программа будет печатать' 0' вместо ничего. –

+0

Как мне открыть файл? Я знаю, что это очень просто. – Identical

+0

@Identical: awk по умолчанию предполагает, что первым аргументом является программа для запуска, а все остальное - входной файл (ы). Вы можете немного изменить это поведение с помощью флагов, но это значение по умолчанию. Обратите внимание, что мой ответ содержит всю программу в одинарных кавычках - все это первый аргумент. –

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