Esta pergunta já tem respostas aqui :

Comentários

  • Por forma, com base em seu exemplo aqui, você pode estar interessado em nosso site irmão, Bioinformática .
  • Eu errei ao invés de retratar meu próprio voto fechado, porque as respostas à questão vinculada que mais me convencem, são aquelas que antecipam a possibilidade de -, e as atuais tais respostas requerem PCRE (que não é obrigatório aqui) ou assuma o caractere de espaço ASCII como delimitador, não um caractere de tabulação.

Resposta

Com awk:

Comentários

  • Toque agradável com o total!
  • Plus pode usar awk '{print $1}' <inputfile|sort -n|uniq -c obtenha um resumo das frequências de contagem de tag.
  • Não há necessidade de indireto inputfile com <, mas certamente sim.

Resposta

A pergunta no corpo

Selecione as linhas que começam com 1 e são seguidas por um espaço

grep -c "^1\s" file grep -c "^1[[:space:]]" file 

Isso também fornecerá a contagem de linhas (sem precisar chamar wc)

A pergunta no título

A 1 não seguido por outro número (ou nada):

grep -cE "^1([^0-9]|$)" file 

Mas ambas as soluções acima têm alguns assuntos interessantes, continue lendo.


No corpo da pergunta, o usuário afirma que o arquivo é “delimitado por tabulação”.

Delimitador

guia

Uma linha começando com wi th a 1 seguido por uma guia (uma guia real no comando). Isso falha se o delimitador for um espaço (ou qualquer outro, ou nenhum):

grep "^1 " file 

espaço

Uma linha começando com 1 seguido por um espaço (um espaço real no comando). Falha se o delimitador for qualquer outro ou nenhum:

grep "^1 " file 

tabulação ou espaço

grep "^1( | )" file grep "^1[[:blank:]]" file 

espaço em branco

Uma opção mais flexível é incluir vários caracteres de espaço (horizontal e vertical). O [:space:] conjunto de classes de caracteres é composto por (espaço), \t (guia horizontal ), \r (retorno de carro), \n (nova linha), \v (guia vertical ) e \f (alimentação de formulário). Mas grep não pode corresponder a uma nova linha (é uma limitação interna que só poderia ser evitada com a opção -z). É possível usá-lo como uma descrição no delimitador. Também é possível, e mais curto, usar a abreviação GNU disponível de \s:

grep -c "^1[[:space:]]` file grep -c "^1\s" file 

Mas esta opção falhará se o delimitador for algo como dois pontos : ou qualquer outro caractere de pontuação (ou qualquer letra).

Limite

Ou, podemos usar a transição de um dígito para um limite “diferente de um dígito”, bem, na verdade “um caractere que não está em [_[:alnum:]] (_a-zA-Z0-9 ) “:

grep -c "^1\b" file # portable but not POSIX. grep -c "^1\>" file # portable but not POSIX. grep -wc "^1" file # portable but not POSIX. grep -c "^1\W" file # portable but not POSIX (not match only a `1`) (not underscore in BSD). 

Isso aceitará como válidas as linhas que começam com 1 e são seguidas por algum caractere de pontuação.

Comentários

  • Não há como as linhas apresentadas pelo usuário: 1 TGCAG… conter apenas um 1 (isto é: sem dados genômicos). Mas, de qualquer maneira, uma solução viável também foi adicionada.@St é phaneChazelas

Resposta

Parece que você acabou de deseja isto:

$ grep "^1\b" a 1 TGCAG..... 1 TGCAG...... 

Para a parte de contagem deste:

$ grep -c "^1\b" file 2 

Resposta

Qualquer um desses selecionará linhas com um 1 na primeira coluna

awk "$1 == 1" grep -w "^1" 

Ambos podem ser estendidos para que você não precise do wc para contar as linhas

awk "$1==1 { x++ } END { print x }" grep -cw "^1" 

Resposta

Usando grep:

grep -c "^1\s" file 

Isso corresponderá a qualquer linha começando com 1 imediatamente seguido por um espaço em branco e fornecerá uma contagem dessas linhas (eliminando a necessidade de wc -l)


$ cat input 79 TGCAG..... 1 TGCAG..... 1257 TGCAG..... 1 TGCAG...... $ grep -Ec "^1\s" input 2 

Resposta

Boas respostas aqui, mas assumindo que nem toda linha termina em um espaço (como se você fosse t alguns que realmente chegam ao seu “=”), você pode usar isto:

 grep -c "^1[^0-9]" file 

Basicamente, corresponde a qualquer linha que comece com um, seguido por um não dígito, incluindo espaço em branco. Um pouco mais prolixo, mas também mais infalível. (Embora seja importante notar que não há nada aqui para a condição nula de apenas um na linha, não é sensível ao fim de linha.)

Comentários

  • Observe que não permite linhas que consistam apenas em 1. Se isso ' s não desejado, use, por exemplo, ^1($|[^0-9])

Resposta

Você também pode usar a linha abaixo:

$ awk -F" " "{if($1=="1") print $0}" <your file name> | wc -l 

O parâmetro -F torna o separador de campo um espaço em branco . Se o valor do primeiro campo “s for” 1 “, sua linha será impressa.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *