Tengo un archivo de texto Tarea: obtenga la primera y última línea del archivo después
$ cat file | grep -E "1|2|3|4" | commandtoprint
$ cat file
1
2
3
4
5
Necesita esto sin salida de gato (solo 1 y 5).
~$ cat file | tee >(head -n 1) >(wc -l)
1
2
3
4
5
5
1
Quizás exista una solución awk y más corta ...

wc -lno tiene nada que ver con la salida de la última línea de un archivo.Respuestas:
Solución sed :
Al leer de
stdinif se vería así (por ejemplops -ef):Solución de cabeza y cola :
Cuando los datos provienen de un comando (
ps -ef):Solución awk :
Y también el ejemplo canalizado con
ps -ef:fuente
(head -n1 file;tail -n1 file)tengo un comando muy grande y una tubería como último símbolo. Tan| sed '1p;$!d'corto.head && tailRealmente funciona para ti? soloseq 10 | (head -n1 && tail -n1)impresiones1.-e 1b- en la primera línea, bifurca hasta el final de la secuencia de comandos sed, en cuyo punto ocurre la "impresión" implícita. Si la entrada tiene solo una línea de longitud, sed termina. De lo contrario, para todas las líneas excepto la última, elimine. En la última línea, la "impresión" implícita ocurre nuevamente.sed4.2.2. Salud.sed -n '1p;$p' file.txtimprimirá la primera y última línea de file.txt.fuente
sed -e 1b -e '$!d'si no quieres eso.Una divertida forma pura de Bash≥4:
Después de esto, tendrá una matriz
arycon el primer campo (es decir, con índice0) como la primera línea defile, y su último campo será la última línea defile. La devolución de llamadacb(opcional si desea sorber todas las líneas de la matriz) desactiva todas las líneas intermedias para no saturar la memoria. Como subproducto gratuito, también tendrá el número de líneas en el archivo (como el último índice de la matriz + 1).Manifestación:
fuente
Con
sedusted podríadelegir líneas si NO es la1primera Y NO la última$.Use
!paraNOT(negar) una condición y laX{Y..}construcción para combinar condicionesXANDY:o puede usar un rango, de
2nd a la$t, y eliminar todas las líneas de ese rango, excepto la$línea t:fuente
Usando Perl:
Lo anterior imprime el primer elemento en la salida de
seq 10via theif 1..1, mientrasor eofque también imprime el último elemento.fuente
/etcabrtyyum.repos.dtengo que hacer esta pregunta?Sin gato:
o
fuente
fuente