Saya punya perintah:
$ awk '{ print length($0); }' /etc/passwd
Ini mencetak jumlah karakter dari setiap baris dalam file passwd :
52
52
61
48
81
58
etc.
Bagaimana saya bisa mencetak jumlah karakter hanya untuk n baris pertama?
Sebagai contoh - untuk 3 baris pertama akan memberikan sesuatu seperti:
52
52
61
command-line
text-processing
awk
bambosze_babuni
sumber
sumber
awk '(NR<=line) && length($0) {print length($0)}' line=3 file
Jawaban:
Katakan
awk
untuk berhenti ketika baris sudah cukup dibaca:Perhatikan bahwa solusi ini mengabaikan garis kosong, meskipun tidak untuk jumlah baris.
sumber
Versi bahasa Inggris langsung (tidak seefisien @ Thor), tetapi sedikit lebih jelas:
sumber
awk '{ print length } NR>=3 { exit }' /etc/passwd
, saya akan membatalkannya.Anda dapat menjalankannya
awk
hanya dengan perintah, sebagaimana dijelaskan dengan baik oleh @Thor, dan @JJoao (+1 dari saya)Anda dapat menggabungkan
awk
danhead
dengan parameter-n
berikut dengan jumlah baris seperti yang dijelaskan di bawah ini:Terima kasih atas saran @Merlyn untuk mengeksekusi dalam urutan ini:
head | awk
mis. Anda akan mendapatkan 3 baris pertama menggunakan:
kepala manusia
sumber
head -n3 /etc/passwd | awk
jadi awk tidak harus memproses seluruh file.head
.head
adalah solusi kerja pertama yang muncul di pikiran saya. Saya telah memutakhirkan @Thor, jawaban @JJao yangawk
hanya menggunakan solusi.