Как узнать, сколько значений в столбце отсутствуют

Как узнать, сколько значений в столбце отсутствуют

Я пытался выяснить, как узнать, сколько значений в столбце отсутствуют, т.е. содержат только «.»

Например

автомобиль.txt

Car           Colour      mpg          Year
vw_golf         blue       56          2006
vw_polo          red       66          2010
honda_civic    white       .           2007
ford_ka          red       .           2014

Итак, меня интересуют Honda Civic и Ford Ka, поскольку у них нет числа в столбце миль на галлон, и я хочу узнать, сколько значений в столбце миль на галлон не имеет значения (в данном случае 2).

Проблема, с которой я столкнулся, заключается в том, что точка выдает ошибки, когда я использую команду awk.

решение1

Короткийgrepподход:

grep -Ec '^\S+\s+\S+\s+\.\s+' file
2

  • -E- разрешить расширенные регулярные выражения
  • -c- вывести количество совпадающих строк
  • \S+- соответствует непробельным символам, является синонимом[^[:space:]]
  • \s+- соответствует пробельным символам, это синоним[[:space:]]

решение2

Другой grepметод, если ваш файл строго отформатирован так, чтобы mpg начинался со столбца 28:

$ grep '...........................\.' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ grep -c '...........................\.' input
2

Это 28 точек (для символа «любой»), за которыми следует экранированная точка («точка»).

Или с awk,как упомянулв комментариях:

$ awk '$3 == "."' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ awk '$3 == "."' input | wc -l
2

Связанный контент