Si uso cat -n text.txtpara numerar automáticamente las líneas, ¿cómo puedo usar el comando para mostrar solo ciertas líneas numeradas?
text-processing
cat
Geckono1
fuente
fuente

tail+headtambién puede hacer esto, como puedeawkRespuestas:
Utilizar
sedUso
Para imprimir una línea (5)
Para imprimir varias líneas (5 y 8)
Para imprimir un rango específico (5 - 8)
Para imprimir rango con otra línea específica (5 - 8 y 10)
fuente
Una forma de hacerlo es mediante el uso de
sed:donde 11 es el número de la línea que desea eliminar.
O para eliminar todos menos 11:
Los rangos también son posibles:
Y
cat -nni siquiera es necesario:fuente
Puedes usar awk directamente.
reemplazando '1' con el número de línea deseado.
fuente
Dependiendo de los objetivos me gusta la cabeza o grep
cat /var/log/syslog -n | head -n 50 | tail -n 10devolverá las líneas 41 a la 50.
o
cat /var/log/syslog -n | grep " 50" -b10 -a10mostrará las líneas 40 a 60. El problema con el método grep es que debe usar la cuenta para rellenar los números de línea (observe el espacio)
Ambos son bastante útiles para analizar archivos de registro.
fuente
catembargo, ninguno de los ejemplos necesitacatno puede hacer lo que quiere el OPComo otros te han mostrado, no hay necesidad de usar
cat -n. Otros programas lo harán por usted. Sin embargo, si realmente necesita analizar la salidacat -ny mostrar solo líneas específicas (por ejemplo, 4-8, 12 y 42), puede hacer lo siguiente:En
awk,$1es el primer campo, por lo que este comando imprime todas las líneas cuyos primeros campos son i) entre 4 y 8 (inclusive) o ii) 12 o iii) 42.Si también desea eliminar el campo agregado por
cat -npara obtener las líneas originales del archivo, puede hacer lo siguiente:fuente