Combinando espaço e tab em uma linha com várias colunas no unix

0

Existem mais de 200 arquivos em uma pasta em que alguns dos arquivos consistem no seguinte padrão em seus registros

ABCD<Space><tab><Space>,EFGH,<SPACE>, .

Sem alterar ou substituir, só quero saber o número de arquivos com esse formato.

    
por gobinathk2390 16.08.2018 / 09:40

4 respostas

0

O grep tem o modo de regexp do Perl (-P) e apenas a contagem (-c)

$ grep -c -P 'ABCD\ \t\ ,EFGH,\ ,' file
1
    
por 16.08.2018 / 10:28
0

Tente isto para obter o número de arquivos que tem o padrão

grep -rlP "ABCD \t ,EFGH, " directory   | wc -l
  • Pesquisa de ficheiros recursiva r
  • P modo Perl
  • l imprime o nome de cada arquivo de entrada do qual a saída normalmente teria sido impressa. A digitalização será interrompida na primeira correspondência.
  • contagem de linhas

Para obter a lista de arquivos:

grep -rlP "ABCD \t ,EFGH, " directory   |  awk -F '/' '{print $2}' 
    
por 16.08.2018 / 10:55
0

Este comando conta o número de arquivos no diretório atual que contêm correspondências ao seu padrão:

grep -Psl 'ABCD \t ,EFGH, ,' * | wc -l

(Em comum com a maioria das outras soluções, ele irá enganar arquivos que contenham novas linhas embutidas em seu nome. Em um mundo GNU você pode usar grep -PZsl '...pattern...' * | tr '\n%code%' 'X\n' | wc -l para consertar isso.)

    
por 16.08.2018 / 11:10
0

com zsh

(cd folder && grep -l $' \t ' ./*(D.)) | grep -c /

Contará o número de arquivos regulares no diretório folder que contém pelo menos uma ocorrência de <space><tab><space> .

Recursivamente:

(cd folder && grep -l $' \t ' .//**/*(D.)) | grep -c //

Recursivamente, você também pode usar find :

(cd folder && find .//. -type f -exec grep -l $' \t ' {} +) | grep -c //

Se você quiser considerar apenas os arquivos em que <space><tab><space> é encontrado na primeira coluna, altere o padrão para $'^[^,]* \t ' .

    
por 16.08.2018 / 11:25