Saya memiliki mini-sistem dengan jumlah terbatas dari binari ( bash
, cp
, cat
, sed
, ...). Saya tidak punya tail
perintah, dan saya ingin tahu apakah saya bisa meniru fungsi ekorsed
cat foo.txt | tail -n 10
Saya tahu bahwa saya dapat mencetak baris 1-10 dengan sed cat foo.txt | sed -n '1,10p'
, tetapi bagaimana saya akan mencetak 10 baris terakhir?
Jawaban:
Anda dapat melakukan sesuatu seperti ini:
sumber
sed -e :a -e '$q;N;11,$D;ba' foo
untuk mencocokkan pertanyaan.sed -e '1,11p' -e :a -e '$q;N;11,$D;ba'
Tapi saya masih ingin memahami bagian ekornya !!!tetapi jika Anda tidak memiliki tac, Anda hanya dapat menggunakan cara ini:
sumber
Apakah
expr
tersedia dengan sistem Anda? Kemudian Anda dapat mencoba mengevaluasi nomor baris yang diinginkan setelah Anda menghitung jumlah total baris dalam file.Saya membuat file dengan nama yang
tmp
berisi angka dari 1 hingga 20 di setiap baris.Tentu saja, Anda dapat menggunakan
wc -l
, jika tersedia.Perintah untuk menghitung jumlah total baris dalam file diambil dari sed one liners . Namun, saya belum memeriksa apakah itu berfungsi dengan file kosong juga.
PS Jika
expr
tidak tersedia, Anda dapat menggunakan angka kurang di Bash seperti yang ditunjukkan di bawah ini:sumber