#linux #bash #unix #awk #grep
#linux #bash #unix #awk #grep
Вопрос:
Я согласен grep
, но я знаю, что awk
в этом случае это, вероятно, более эффективно. Я учусь, но пока не совсем.
У меня есть некоторые данные:
record1,14.2,10,50
record2,10.7,5,-
record3,9.3,6.8,10
record4,8,2.7,10
record5,5.5,22.4,10
record6,3,23.6,55
record7,2.7,14.6,-
Я хотел бы печатать только те строки, которые больше 7 в поле 3 и больше 10 (при удалении любых тире) в поле 4. Таким образом, результат будет таким:
record1,14.2,10,50
record6,3,23.6,55
awk '{print $3 > 7}'
Однако, как я уже сказал, я не очень разбираюсь в awk
и условиях. Я мог бы сделать это с помощью grep, но я чувствую, что это неэффективно. Любая помощь приветствуется.
Ответ №1:
Структура скрипта awk такова condition { action }
. По умолчанию выполняется действие { print }
, которое печатает всю запись целиком.
- Вашими условиями являются
$3 > 7
и$4 > 10
. - Разделителем полей является запятая.
Объединяя эти вещи, мы получаем:
awk -F, '$3 > 7 amp;amp; $4 > 10' file