command line - uso - ¿Qué es lo opuesto a la cabeza? Quiero todas menos las primeras N líneas de un archivo
unix crear archivo vacio (8)
Prueba sed 1,2d
. Reemplace 2 según sea necesario.
Dado un archivo de texto de longitud desconocida, ¿cómo puedo leer, por ejemplo, todas menos las primeras 2 líneas del archivo? Sé que tail
me dará las últimas N líneas, pero no sé qué N es antes de tiempo.
Entonces para un archivo
AAAA
BBBB
CCCC
DDDD
EEEE
yo quiero
CCCC
DDDD
EEEE
Y para un archivo
AAAA
BBBB
CCCC
Me gustaría obtener solo
CCCC
Realmente no sé cómo hacerlo solo con la cola o la cabeza, pero con la ayuda de wc -l
(recuento de líneas) y la expresión bash, puedes lograrlo.
tail -$(( $( wc -l $FILE | grep -Eo ''[0-9]+'' ) - 2 )) $FILE
Espero que esto ayude.
Suponiendo que su versión de cola lo admite, puede especificar comenzar la cola después de las líneas X. En tu caso, harías 2 + 1.
tail -n +3
[mdemaria@oblivion ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE
Una solución simple usando awk:
awk ''NR > 2 { print }'' file.name
Use esto, suponiendo que la primera muestra se llama sample1.dat luego tail --lines=3 sample1.dat
que imprimirá todas las líneas desde la 3ra línea hasta la última línea.
Para la segunda muestra, nuevamente supongamos que se llama sample2.dat, sería tail --lines=-1 sample2.dat
que imprimiría la última línea ...
usando awk para obtener todas menos la última 2 línea
awk ''FNR==NR{n=FNR}FNR<=n-3{print}'' file file
awk para obtener todas menos las primeras 2 líneas
awk ''NR>2'' file
O puedes usar más
more +2 file
o solo bash
#!/bin/bash
i=0
while read -r line
do
[[ $i > 1 ]] && echo "$line"
((i++))
done <"file"
tail --help
da lo siguiente:
-n, --lines=K output the last K lines, instead of the last 10;
or use -n +K to output lines starting with the Kth
Por lo tanto, para filtrar las primeras 2
líneas, -n +3
debería darle la salida que está buscando (comenzar desde la 3ra).
tail -n +linecount filename
comenzará la salida en el linecount
del filename
del filename
, por lo que tail -n +3 filename
hará lo que usted desee.