Si uso cat -n text.txt
para 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
+head
también puede hacer esto, como puedeawk
Respuestas:
Utilizar
sed
Uso
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 -n
ni 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 10
devolverá las líneas 41 a la 50.
o
cat /var/log/syslog -n | grep " 50" -b10 -a10
mostrará 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
cat
embargo, ninguno de los ejemplos necesitacat
no 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 -n
y mostrar solo líneas específicas (por ejemplo, 4-8, 12 y 42), puede hacer lo siguiente:En
awk
,$1
es 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 -n
para obtener las líneas originales del archivo, puede hacer lo siguiente:fuente