Eu tenho um arquivo CSV como este:
abd,123,egypt,78
cde,456,england,45
Como posso obter a contagem de caracteres apenas das palavras da 3ª coluna?
Não consigo descobrir como wc
fazer isso.
cut -d, -f3 | tr -d '\n' | wc -m
(lembre-se de que wc -c
conta bytes, não caracteres:
$ echo a,1,españa,2 | cut -d, -f3 | tr -d '\n' | wc -c
7
$ echo a,1,españa,2 | cut -d, -f3 | tr -d '\n' | wc -m
6
)
wc
comando para obter saída!'wc
me dar a contagem de caracteres, e é por isso que mostro como usarwc
nesse contexto.fonte
awk
foi projetado para processar arquivos baseados em colunas, linha por linha. O problema é perfeitamente adequado para a ferramenta.0
vez de uma linha vazia quando o arquivo de entrada estiver vazio.awk
) cooperando com o caso (trabalhando simultaneamente) no espírito típico do Unix. Você pode perceber como o cut + tr + wc one é de 5 tipos tão rápido quanto este próprio awk 5 vezes mais rápido que operl
outro. (pelo menos no meu sistema, em um código de idioma UTF8, tentei em um arquivo de 100 MB).Uma
perl
solução:ou uma versão mais curta:
fonte
-Mopen=:locale
paraperl
usar a definição do usuário / sistema do que um personagem é, caso contrário, assume personagens são bytes. Tente umaa,1,españa,2
entrada em um código de idioma UTF-8 (o padrão na maioria dos sistemas).fonte
Você também pode usar
fonte
Em Perl:
fonte
Com o seu arquivo de amostra da seguinte forma:
Trabalhar
wc
para obter a contagem de cada linha pode ser complicado. Você deve chamá-lo para cada sequência da coluna 3 individualmente, o que torna um pouco complicado fazer o que você deseja. Você deve examinar cada linha do seu CSV, extrair a coluna 3 e apresentá-la aowc
para obter a contagem de caracteres.fonte
Usando
sed
eawk
Exemplo:
Dois awk's
Exemplo:
fonte