Estou tentando contar o número de linhas após uma linha problemática em um arquivo csv. Estou ciente de que posso usar a grep -a #
sintaxe para gerar # número de linhas depois que uma correspondência foi encontrada. Estou interessado apenas no número real de linhas. Percebo que poderia definir o número como MAX_INT, canalizá-lo em um arquivo e fazer mais processamento.
Estou procurando uma linha sucinta para me contar a contagem.
Alguma sugestão?
grep -m1 match >/dev/null
. E seu segundo problema é um GNUsed
- ele não redefine seu deslocamento de entrada por especificação. Você precisa usar-u
w / GNU - o que nem sempre é desejável. Eu poderia ter sido mais claro, mas minha suposição era que um GNUgrep
e GNUsed
viriam em pares. Eu acho que tambémgrep -qm1
poderia funcionar para atalho para o/dev/null
redirecionamento - mas o GNUgrep
faz coisas estranhas com-q
e não consigo me lembrar de como esses dois trabalham juntos.wc -l
é um pouco mais barato quegrep -c ''
.Aqui está uma maneira.
fonte
Outra maneira - o uso de
dc
é um pouco esotérico, mas parece funcionar bem aqui:sed
procuraprob.txt
por "problema" e a última linha e usa o=
comando para gerar o número da linha de ambos.dc
lê esses dois valores na pilha, os reverte, subtrai e imprime a diferença.fonte
Inteiramente com sed (embora dois comandos com um cano)
Exclui toda a linha antes da linha e, em seguida, o próximo comando conta as linhas no novo arquivo.
fonte
Isso deve excluir todas as linhas até (e incluindo) a problemática e, em seguida, contar as linhas restantes:
fonte