Como líneas de salida 800-900 de un archivo con un comando de Unix?
-
22-09-2019 - |
Pregunta
Deseo emitir todas las líneas entre A y B en un archivo.
esto funciona, pero parece un exceso:
head -n 900 file.txt | tail -n 100
Mi falta de conocimiento de Unix parece ser el límite aquí. ¿Alguna sugerencia?
Solución
sed -n '800,900p' file.txt
Esto imprimirá (p
) líneas 800 a través de 900, incluyendo tanto la línea 800 y 900 (es decir, 101 líneas en total). No va a imprimir cualquier otra línea (-n
).
Adjust Desde 800 a 801 y / o 900 a 899 a hacer que haga exactamente lo que piensa "entre 800 y 900" debe significar en su caso.
Otros consejos
encontrado una forma más bonita: Uso de sed, para imprimir sólo las líneas entre A y B:
sed -n -e 800,900p filename.txt
A partir de la entrada en el blog: Uso de sed para extraer líneas en un archivo de texto
Una forma lo estoy usando es encontrar (y dif) secciones similares de archivos:
sed -n -e 705,830p mnetframe.css > tmp1; \
sed -n -e 830,955p mnetframe.css > tmp2; \
diff --side-by-side tmp1 tmp2
Lo que me dará una buena comparación lado a lado de las secciones similares de un archivo:)