Anda cukup:
(head; tail) < file.txt
Dan jika Anda perlu menggunakan pipa karena alasan tertentu, seperti ini:
cat file.txt | (head; tail)
Catatan:akan mencetak baris duplikat jika jumlah baris di file.txt lebih kecil dari garis standar kepala + garis ekor standar.
Untuk aliran murni (mis. output dari perintah), Anda dapat menggunakan 'tee' untuk memotong aliran dan mengirim satu aliran ke kepala dan satu ke ekor. Ini membutuhkan penggunaan fitur '>( list )' dari bash (+ /dev/fd/N):
( COMMAND | tee /dev/fd/3 | head ) 3> >( tail )
atau menggunakan /dev/fd/N (atau /dev/stderr) plus subkulit dengan pengalihan rumit:
( ( seq 1 100 | tee /dev/fd/2 | head 1>&3 ) 2>&1 | tail ) 3>&1
( ( seq 1 100 | tee /dev/stderr | head 1>&3 ) 2>&1 | tail ) 3>&1
(Tidak satu pun dari ini akan berfungsi di csh atau tcsh.)
Untuk sesuatu dengan kontrol yang sedikit lebih baik, Anda dapat menggunakan perintah perl ini:
COMMAND | perl -e 'my $size = 10; my @buf = (); while (<>) { print if $. <= $size; push(@buf, $_); if ( @buf > $size ) { shift(@buf); } } print "------\n"; print @buf;'
ed
adalah standard text editor
$ echo -e '1+10,$-10d\n%p' | ed -s file.txt