Печать строк, размер которых превышает два поля

#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