una tecnologia sistema organizacion manejo los importancia evolucion empresa documentos documentales archivos archivo unix text-processing

unix - tecnologia - importancia del sistema de archivo



Omita las lĂ­neas del archivo hasta que encuentre una coincidencia, luego genere el resto (3)

¿Por qué no pruebas awk por esto? Se vería así:

awk ''NR == 1, /LastHeaderLine/ { next } { print }'' myinputfile > myoutputfile

donde NR == 1 es verdadero para la primera línea, / LastHeaderLine / coincide con su última línea de encabezado. El operador de coma permite que la siguiente función {next} se active para todas las oraciones en el rango de las dos expresiones regulares. En este caso saltará a la siguiente línea de entrada sin más operación. Para todas las demás líneas de entrada, imprimirá las líneas en la salida estándar, que puede redirigir utilizando>.

Puedo escribir un guión trivial para hacer esto, pero en mi búsqueda constante para obtener más familiaridad con Unix, me gustaría aprender métodos eficientes utilizando comandos integrados.

Necesito tratar con archivos muy grandes que tienen un número variable de líneas de encabezado. la última línea de encabezado consiste en el texto ''LastHeaderLine''. Deseo dar salida a todo después de esta línea. (No me preocupan los resultados falsos positivos).


Usando sed:

sed -ne ''/LastHeaderLine/,$p'' <inputfile

hará coincidir todo, desde la coincidencia de expresiones regulares hasta el final del archivo. ''p'' imprime las líneas que coinciden.

Editar:

Pensándolo bien, no desea imprimir la línea que coincide con LastHeaderLine. Esto es difícil de hacer con sed. En Perl, podrías hacer lo siguiente:

perl -ne ''if ($flag) {print;} if (/LastHeaderFile/) {$flag=1;}'' <inputfile

Esto imprimirá solo líneas estrictamente después de la coincidencia de expresiones regulares.


Similar a la respuesta de Avi , pero sin incluir la línea con "LastHeaderLine".

sed -e ''1,/LastHeaderLine/d''