Уникальные значения строки пропускают заголовок в csv

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

«git status», например, выводит текст, белый на фоне/черный на белом фоне (разборчивый ), темно-серый для удаленного (неразборчивый на черном фоне, но разборчивый на белом фоне )и средне-серый для добавления (ячменя разборчиво на черном фоне, неразборчиво на белом фоне ). Раньше я переключал фон окна терминала на белый/черный, чтобы читать неразборчивый текст. Простое решение больше:

 git status | more

Это делает весь текст разборчивым на стандартном белом или черном фоне окна терминала.

0
15.10.2020, 13:34
2 ответа

Номер строки текущего файла в awk хранится в специальной FNRпеременной(NRсодержит номер строки в целом, а не по -файлу ). Итак, если ваш заголовок находится в первой строке, вы можете просто изменить свою команду, чтобы пропустить эту строку:

awk -vFPAT='([^,]*)|("[^"]+")|","' '{if ($2!~/NULL/ && FNR>1) {print $2}}' Files/* 

Кроме того, вы можете пропустить строки, соответствующие определенной строке из вашего заголовка:

awk -vFPAT='([^,]*)|("[^"]+")|","' '{if ($2!~/NULL/ && !/headerString/) {print $2}}' Files/*
2
18.03.2021, 22:57

Вы можете выполнить всю задачу с помощью одной команды awk:

awk -vFPAT='([^,]*)|("[^"]+")|","' 'FNR > 1 && $2 !~ /NULL/ && !seen[$2]++ {cnt++}
                                    END {print cnt}' *.csv

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

См. также примеры со стандартным awk, построенным -в переменных , FNR — количество записей в файле (для одного входного файла, FNR==NRдля каждой строки)


Кроме того, если вы хотите проанализировать все файлы, кроме первой строки, любой командой, вы можете использовать tail. Это исключает первую строку каждого файла и печатает остальные:

tail -n +2 *.csv | command
2
18.03.2021, 22:57

Теги

Похожие вопросы