J'utilise grep pour faire correspondre une chaîne dans un fichier. Voici un exemple de fichier:
example one,
example two null,
example three,
example four null,
grep -i null myfile.txt
retourne
example two null,
example four null,
Comment puis-je retourner des lignes correspondantes avec leurs numéros de ligne comme ceci:
example two null, - Line number : 2
example four null, - Line number : 4
Total null count : 2
Je sais que -c renvoie le nombre total de lignes correspondantes, mais je ne sais pas comment le formater correctement pour ajouter total null count
devant, et je ne sais pas comment ajouter les numéros de ligne.
Que puis-je faire?
-n
renvoie le numéro de la ligne.
-i
est pour ignore-case. À n'utiliser que si la correspondance de casse n'est pas nécessaire
$ grep -in null myfile.txt
2:example two null,
4:example four null,
Combinez avec awk
pour imprimer le numéro de ligne après le match:
$ grep -in null myfile.txt | awk -F: '{print $2" - Line number : "$1}'
example two null, - Line number : 2
example four null, - Line number : 4
Utilisez la substitution de commande pour imprimer le nombre total de null:
$ echo "Total null count :" $(grep -ic null myfile.txt)
Total null count : 2
Utilisez -n
ou --line-number
.
Découvrez man grep
pour plus d'options.
Ou utilisez awk
à la place:
awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file
utilisez grep -n -i null myfile.txt
pour indiquer le numéro de ligne devant chaque correspondance.
Je ne pense pas que grep dispose d'un commutateur pour imprimer le nombre total de lignes correspondantes, mais vous pouvez simplement diriger la sortie de grep dans wc pour accomplir cela:
grep -n -i null myfile.txt | wc -l
grep
trouve les lignes et affiche les numéros de ligne, mais ne vous permet pas de "programmer" d'autres choses. Si vous voulez inclure du texte arbitraire et faire une autre "programmation", vous pouvez utiliser awk,
$ awk '/null/{c++;print $0," - Line number: "NR}END{print "Total null count: "c}' file
example two null, - Line number: 2
example four null, - Line number: 4
Total null count: 2
Ou seulement en utilisant le shell (bash/ksh)
c=0
while read -r line
do
case "$line" in
*null* ) (
((c++))
echo "$line - Line number $c"
;;
esac
done < "file"
echo "total count: $c"
ou en Perl (pour être complet ...):
Perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}'
Voir ce lien pour la commande linux linux http://linuxcommand.org/man_pages/grep1.html
pour afficher la ligne no, la ligne de code et le fichier, utilisez cette commande dans votre terminal ou cmd, GitBash (Powered by terminal)
grep -irn "YourStringToBeSearch"
Je pensais juste que quelque chose pourrait vous aider dans le futur. Pour rechercher plusieurs chaînes et numéros de ligne de sortie et parcourir la sortie, tapez:
egrep -ne 'null|three'
montrera:
2:example two null,
3:example three,
4:example four null,
egrep -ne 'null|three' | less
affichera la sortie dans une session moins
HTH Jun