Dado un archivo de texto de longitud desconocida, ¿cómo puedo leer, por ejemplo, todas menos las 2 primeras líneas del archivo? Sé tail
que me dará las últimas N líneas, pero no sé qué es N antes de tiempo.
Entonces para un archivo
AAAA
BBBB
CCCC
DDDD
EEEE
quiero
CCCC
DDDD
EEEE
Y para un archivo
AAAA
BBBB
CCCC
Solo obtendria
CCCC
command-line
scripting
tail
unix-head
Nicholas MT Elliott
fuente
fuente
head
para esto?Suponiendo que su versión de tail lo admita, puede especificar comenzar la cola después de X líneas. En tu caso, harías 2 + 1.
fuente
Una solución simple usando awk:
fuente
{ print }
es la acción predeterminada y se puede omitir.Tratar
sed 1,2d
. Reemplace 2 según sea necesario.fuente
tail -n +linecount filename
comenzará a salir en la línealinecount
defilename
, portail -n +3 filename
lo que debe hacer lo que desee.fuente
tail -n +17 filename
haría. Yo uso bash / ubuntu LTStail
aceptaron la sintaxis que usé en mi respuesta original, pero ahora hay que usar la-n
opción explícita . He actualizado mi respuesta en consecuencia.Use esto, suponiendo que la primera muestra se llame sample1.dat y luego
tail --lines=3 sample1.dat
imprima todas las líneas desde la tercera línea hasta la última.Para la segunda muestra, supongamos de nuevo que se llama sample2.dat, que sería la
tail --lines=-1 sample2.dat
que imprimiría la última línea ...fuente
tail +3 anyfile
da los resultados deseados para el caso general, mientras quetail --lines=N
requiere conocer N de antemano para dar el resultado deseado.tail
... ¿no debería ser "de abajo hacia arriba"? (Ba-dum TISH! Gracias, estaré aquí toda la semana ...)Realmente no sé cómo hacerlo desde la cola o la cabeza, pero con la ayuda de
wc -l
(recuento de líneas) y la expresión bash, puedes lograrlo.Espero que esto ayude.
fuente
usando awk para obtener todas menos las últimas 2 líneas
awk para obtener todo menos las primeras 2 líneas
O puedes usar más
o simplemente golpear
fuente