Comentários
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 um1
(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.
-
, 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.