Подсчет уникальных значений во всех столбцах CSV-файла

Вам понадобится -Pдля PCRE, который реализует Perl (?!...)отрицательный просмотр вперед, и чтобы не экранировать !в (?!...).

-bash-4.2$ cat input
<?php
<?xml
<?=
<?okay
<?
-bash-4.2$ grep -P '<\?(?!php|xml|=)' input
<?okay
<?
-bash-4.2$ 

"<\?(?\!php|=|xml)"неверно, поскольку это переходит от (?\!...)к grep, а ?\!совершенно не соответствует ?!с точки зрения механизма регулярных выражений; если вы не уверены, что передается программе оболочкой, либо напишите код для проверки этого:

$ perl -E 'printf "%*vd\n","\t",$ARGV[0];say join "\t",split //,$ARGV[0]' "?\!"
63  92  33
?   \   !
$ 

Или используйте что-то вроде strace, чтобы увидеть, что grepполучил:

-bash-4.2$ strace -o grep grep "?\!grep" /etc/passwd
-bash-4.2$ grep grep grep
execve("/usr/bin/grep", ["grep", "?\\!grep", "/etc/passwd"], [/* 24 vars */]) = 0
-bash-4.2$ 
0
27.09.2019, 15:32
1 ответ

с помощью xsv(https://github.com/BurntSushi/xsv)начиная с

A,B,C,D
a,b,c,d
e,f,g,h
e,i,j,k
a,m,n,k

и работает

xsv stats input.csv --everything | xsv select field,cardinality >output.txt

у вас будет

field,cardinality
A,2
B,4
C,4
D,3
1
28.01.2020, 02:39

Теги

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