Además de usar un archivo temporal para ayudar, ¿hay alguna forma/programa que pueda almacenar en búfer la entrada de stdin? pero no muestra el contenido hasta obtener el EOF . Tampoco quiero usar una variable de shell (por ejemplo, buffer=$(cat) ).
Este programa debería comportarse como se muestra a continuación (supongamos que el nombre del programa es buffered-cat ):
$ buffered-cat
line 1
line 2
line 3
^D # Ctr-D here(End of Line)
Ahora que el programa recibió ^D , el buffered-cat emite el contenido
line 1
line 2
line 3
Respuesta aceptada:
La sponge de un pobre usando awk :
awk '{a[NR] = $0} END {for (i = 1; i <= NR; i++) print a[i]}'
Si tienes tac , también puedes usarlo mal:
... | tac | tac