В мире bash столбцы - это то, что вы делаете их, обычно через установку чего-то с именем field separator (delimiter)
.В экосистеме есть некоторый беспорядок.Обычно разделителем является только один символ, часто <tab>
по умолчанию (cut
, paste
, ...).Но, например, sort
и awk
используют целую полосу пробелов в качестве одного разделителя, если вы не установите его вручную (но вы можете установить только один символ, если вы хотите <tab>
, используйте, например, awk -F$'\t'
).
Если ваши данные выглядят так же, как в вашем вопросе - то есть они имеют столбцы фиксированной ширины - вам лучше использовать awk
, если только в одном из столбцов нет пустого поля (awk '{print $1}'
).Другой вариант синтаксического анализа формата с фиксированной шириной - например, cut -c1-4
(из каждой строки выведите символы от 1 до 4, которые будут вашим идентификатором).
Затем подсчитайте ненулевые значения.Сначала вы хотите пропустить заголовок, то есть tail -n +3
в вашем случае, и ваше «пустое» поле соответствует строке, поэтому рекомендуется grep
(grep -v -c 'null'
).
Вы можете протестировать свой конвейерпо частям, удалив его сзади (и добавив head
).
<input tail -n +3 |
cut -c1-4 |
grep -v -c 'null'