Cette question a déjà des réponses ici :

Commentaires

  • Par le façon, sur la base de votre exemple ici, vous pourriez être intéressé par notre site sœur, Bioinformatique .
  • Jai commis une erreur du côté de la rétractation mon propre vote serré, car les réponses à la question liée qui me convainquent le plus sont celles qui anticipent la possibilité de -, et les réponses actuelles nécessitent soit PCRE (ce qui nest pas obligatoire ici), ou prenez le caractère despace ASCII comme délimiteur, pas comme caractère de tabulation.

Réponse

Avec awk:

Commentaires

  • Belle touche avec le total!
  • Plus peut utiliser awk '{print $1}' <inputfile|sort -n|uniq -c obtenir un récapitulatif des fréquences de décompte des balises.
  • Pas besoin de indirect inputfile avec <, mais oui.

Réponse

La question dans le corps

Sélectionnez les lignes commençant par 1 et suivies dun espace

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

Cela donnera également le décompte de lignes (sans avoir besoin dappeler wc)

La question dans le titre

A 1 pas suivi dun autre nombre (ou rien):

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

Mais les deux solutions ci-dessus ont quelques problèmes intéressants, continuez à lire.


Dans le corps de la question, lutilisateur affirme que le fichier est « délimité par des tabulations ».

Délimiteur

tab

Une ligne commençant par wi e un 1 suivi dun onglet (un onglet réel dans la commande). Cela échoue si le délimiteur est un espace (ou tout autre, ou aucun):

grep "^1 " file 

espace

Une ligne commençant par un 1 suivi dun espace (un espace réel dans la commande). Cela échoue si le délimiteur est autre ou aucun:

grep "^1 " file 

tabulation ou espace

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

espaces

Une option plus flexible consiste à inclure plusieurs caractères despacement (horizontaux et verticaux). Le jeu de classes de caractères [:space:] est composé de (espace), \t (tabulation horizontale ), \r (retour chariot), \n (nouvelle ligne), \v (tabulation verticale ) et \f (form feed). Mais grep ne peut pas correspondre à une nouvelle ligne (cest une limitation interne qui ne pourrait être évitée quavec loption -z). Il est possible de lutiliser comme description sur le délimiteur. Il est également possible, et plus court, dutiliser le raccourci GNU disponible de \s:

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

Mais cette option échouera si le délimiteur est quelque chose comme un deux-points : ou tout autre caractère de ponctuation (ou toute lettre).

Frontière

Ou, nous pouvons utiliser la transition dun chiffre à une limite « pas un chiffre », eh bien, en fait « un caractère pas dans [_[: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). 

Cela acceptera comme valides les lignes commençant par 1 et suivies dun caractère de ponctuation.

Commentaires

  • Il ny a aucun moyen que les lignes présentées par lutilisateur: 1 TGCAG… contiendront seulement un 1 (cest-à-dire sans données génomiques). Mais, de toute façon, une solution viable a également été ajoutée.@St é phaneChazelas

Réponse

On dirait que vous venez voulez ceci:

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

Pour la partie de comptage de ceci:

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

Réponse

Lun ou lautre de ces éléments sélectionnera les lignes avec un 1 dans la première colonne

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

Ceux-ci peuvent tous les deux être étendus afin que vous nayez même pas besoin de wc pour compter les lignes

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

Réponse

En utilisant grep:

grep -c "^1\s" file 

Cela correspondra à toute ligne commençant par un 1 immédiatement suivi dun espace et fournira un nombre de ces lignes (éliminant le besoin de wc -l)


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

Réponse

De bonnes réponses ici, mais en supposant que toutes les lignes ne se terminent pas par un espace (comme si vous alliez t certains qui atteignent réellement votre « = »), vous pouvez utiliser ceci:

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

Il correspond essentiellement à toute ligne commençant par un, suivi de un non-chiffre, y compris un espace blanc. Un peu plus verbeux, mais aussi plus infaillible. (Bien que cela vaille la peine de noter quil ny a rien ici pour la condition nulle de just-one-on-the-line, elle nest pas sensible à la fin de la ligne.)

Commentaires

  • Notez quil interdit les lignes constituées uniquement de 1. Si cela ' nest pas souhaité, utilisez par exemple ^1($|[^0-9])

Answer

Vous pouvez également utiliser la ligne ci-dessous:

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

Le paramètre -F fait du séparateur de champ un espace blanc . Si la valeur du premier champ est « 1 », sa ligne sera imprimée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *