Saya menggunakan perintah ini untuk menampilkan hasil pertama file di direktori saya.
ls | head -n 1
Pertanyaan sederhana saya adalah, bagaimana saya bisa memodifikasi perintah ini untuk menampilkan katakan hasil ke-n?
Terima kasih!
sumber
Saya menggunakan perintah ini untuk menampilkan hasil pertama file di direktori saya.
ls | head -n 1
Pertanyaan sederhana saya adalah, bagaimana saya bisa memodifikasi perintah ini untuk menampilkan katakan hasil ke-n?
Terima kasih!
Anda dapat menggunakan sed untuk memilih satu baris, misalnya baris 12:
ls | sed -n 12p
Opsi -n
meminta sed untuk tidak mencetak setiap baris (yang biasanya dilakukan), dan 12p
meminta untuk mencetak ruang pola ketika alamat 12.
Mungkin ada cara yang lebih baik untuk melakukan ini, tetapi ini mungkin yang paling mudah: ls | head -<n> | tail -1
Lurus ke depan dengan awk
:
$ ls / | awk 'NR==4'
etc
Saya punya ini di saya .bashrc
.
lsn () {
ls ${@:2} | head -n $1 | tail -n 1
}
Ini disebut demikian: lsn 4
misalnya. The $2
memungkinkan Anda untuk menggunakan
pilihan pada ls
jadi lsn 4 -lah
juga berlaku.
Catatan: saat menggunakan -l
bendera di ls
sana ada garis tambahan di bagian atas hasil. Yang akan membelokkan hasil fungsi ini.
ls "$@"
untuk meneruskanlsn
argumen kels
. Tentu saja, setelah digunakanshift
untuk mengambil$1
.$@
pendekatan. Terlihat dengan baik.Dengan
zsh
dan kualifikasi global:atau
akan mencetak file ke-7 dari daftar file yang diurut berdasarkan nama.
atau
akan mencetak file ke-7 dari daftar file-file
o
berdasarkanm
waktu (terbaru pertama - mirip dengan mengekstraksi entri ke-7 darils -t
output).Idealnya, jika Anda memproses
ls
output, Anda harus menggunakan sesuatu seperti dils -q | command(s)
mana-q
mencetak?
bukan karakter yang funky (seperti baris baru) dancommand(s)
hanya memproses garis output N , mencetak N dan kemudian berhenti.sumber
Dengan ekor dan kepala (ditambahkan nl untuk kejelasan). Mari kita ambil baris kelima:
Ini akan melompat ke baris kelima:
Lalu, jelaskan kepala -1
sumber