linux - resetear - ¿Cómo puedo formatear mi salida grep para mostrar los números de línea al final de la línea y también el recuento de visitas?
formatear usb linux ubuntu (8)
Estoy usando grep para hacer coincidir la cadena en un archivo. Aquí hay un archivo de ejemplo:
example one,
example two null,
example three,
example four null,
grep -i null myfile.txt
devuelve
example two null,
example four null,
¿Cómo puedo devolver las líneas coincidentes junto con sus números de línea como este:
example two null, - Line number : 2
example four null, - Line number : 4
Total null count : 2
Sé que -c devuelve el total de líneas coincidentes, pero no sé cómo formatearlo correctamente para agregar el total null count
al frente, y no sé cómo agregar los números de línea.
¿Que puedo hacer?
Consulte este enlace para el comando linux linux http://linuxcommand.org/man_pages/grep1.html
para mostrar la línea no, la línea de código y el archivo, use este comando en su terminal o cmd, GitBash (Powered by terminal)
grep -irn "YourStringToBeSearch"
O use awk
lugar:
awk ''/null/ { counter++; printf("%s%s%i/n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}'' file
Solo pensé en algo que podría ayudarte en el futuro. para buscar múltiples cadenas y números de línea de salida y navegar a través de la salida, escriba:
egrep -ne ''null | three''
Mostrará:
2: ejemplo dos nulo,
3: ejemplo tres,
4: ejemplo cuatro nulo,
egrep -ne ''null | three'' | Menos
mostrará la salida en una sesión menos
HTH Jun
Utilice -n
o --line-number
.
Echa un vistazo a man grep
para muchas más opciones.
o en perl (para completar ...):
perl -npe ''chomp; /null/ and print "$_ - Line number : $./n" and $i++;$_="";END{print "Total null count : $i/n"}''
use grep -n -i null myfile.txt
para generar el número de línea delante de cada coincidencia.
No creo que grep tenga un interruptor para imprimir el recuento del total de líneas coincidentes, pero puede simplemente canalizar la salida de grep en wc para lograr eso:
grep -n -i null myfile.txt | wc -l
-n
devuelve el número de línea.
-i
es para ignorar el caso. Sólo se utiliza si no es necesario la coincidencia de casos
$ grep -in null myfile.txt
2:example two null,
4:example four null,
Combine con awk
para imprimir el número de línea después del partido:
$ grep -in null myfile.txt | awk -F: ''{print $2" - Line number : "$1}''
example two null, - Line number : 2
example four null, - Line number : 4
Utilice la sustitución de comandos para imprimir el recuento total de nulos:
$ echo "Total null count :" $(grep -ic null myfile.txt)
Total null count : 2
grep
encuentra las líneas y genera los números de línea, pero no te permite "programar" otras cosas. Si desea incluir texto arbitrario y hacer otra "programación", puede usar 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
O solo usando el 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"