Saat mencoba membaca nomor versi vim, saya mendapatkan banyak baris tambahan yang perlu saya abaikan. Saya mencoba membaca manual headdan mencoba perintah berikut:
vim --version | head -n 1
Saya ingin tahu apakah ini pendekatan yang benar?
Saat mencoba membaca nomor versi vim, saya mendapatkan banyak baris tambahan yang perlu saya abaikan. Saya mencoba membaca manual headdan mencoba perintah berikut:
vim --version | head -n 1
Saya ingin tahu apakah ini pendekatan yang benar?
vim --version 2>&1 | sed 1q
:)Periksa apakah paket Anda mengeluarkan info itu stderrsebagai @WilliamPursell menyediakan pemeriksaan.
Jawaban:
Ya, itu adalah salah satu cara untuk mendapatkan baris pertama keluaran dari sebuah perintah.
Jika perintah mengeluarkan sesuatu ke kesalahan standar yang ingin Anda tangkap dengan cara yang sama, Anda perlu mengarahkan kesalahan standar perintah ke aliran keluaran standar:
utility 2>&1 | head -n 1
Ada banyak cara lain untuk menangkap baris pertama juga, termasuk sed 1q(berhenti setelah baris pertama), sed -n 1p(hanya mencetak baris pertama, tetapi membaca semuanya), awk 'FNR == 1'(hanya mencetak baris pertama, tetapi sekali lagi, membaca semuanya) dll.
Saya akan menggunakan:
awk 'FNR <= 1' file_*.txt
Seperti yang ditunjukkan @Kusalananda, ada banyak cara untuk menangkap baris pertama dalam baris perintah tetapi menggunakan opsi ini head -n 1mungkin bukan pilihan terbaik saat menggunakan karakter pengganti karena ini akan mencetak info tambahan. Mengubah 'FNR == i'ke 'FNR <= i'memungkinkan untuk mendapatkan baris i pertama.
Misalnya, jika Anda memiliki n file bernama file_1.txt, ... file_n.txt:
awk 'FNR <= 1' file_*.txt
hello
...
bye
Tetapi dengan headwildcard mencetak nama file:
head -1 file_*.txt
==> file_1.csv <==
hello
...
==> file_n.csv <==
bye
head -qn1 file_*.txt