Jika saya gunakan cat -n text.txt
untuk secara otomatis memberi nomor pada baris, bagaimana saya kemudian menggunakan perintah untuk menunjukkan hanya nomor baris tertentu.
text-processing
cat
Geckono1
sumber
sumber
tail
+head
juga dapat melakukan ini, seperti halnyaawk
Jawaban:
Menggunakan
sed
Pemakaian
Untuk mencetak satu baris (5)
Untuk mencetak beberapa baris (5 & 8)
Untuk mencetak rentang tertentu (5 - 8)
Untuk mencetak rentang dengan garis tertentu lainnya (5 - 8 & 10)
sumber
Salah satu cara melakukannya adalah dengan menggunakan
sed
:di mana 11 adalah jumlah baris yang ingin Anda hapus.
Atau untuk menghapus semua kecuali 11:
Kisaran juga dimungkinkan:
Dan
cat -n
bahkan tidak dibutuhkan:sumber
Anda dapat menggunakan awk langsung ke atas.
mengganti '1' dengan nomor baris yang diinginkan.
sumber
Tergantung pada tujuan saya suka kepala atau grep
cat /var/log/syslog -n | head -n 50 | tail -n 10
akan mengembalikan garis 41 hingga 50.
atau
cat /var/log/syslog -n | grep " 50" -b10 -a10
akan menampilkan baris 40 hingga 60. Masalahnya dengan metode grep adalah Anda harus menggunakan akun untuk mengisi nomor baris (perhatikan spasi)
Keduanya cukup berguna untuk parsing file log.
sumber
cat
meskipuncat
tidak dapat melakukan apa yang diinginkan OPSeperti yang orang lain tunjukkan kepada Anda, tidak perlu digunakan
cat -n
. Program lain akan melakukannya untuk Anda. Namun, jika Anda benar-benar perlu mem-parsing outputcat -n
dan hanya menampilkan garis-garis tertentu (misalnya, 4-8, 12 dan 42), Anda bisa melakukan:In
awk
,$1
adalah bidang pertama, jadi perintah ini mencetak semua baris yang bidang pertamanya adalah i) antara 4 dan 8 (inklusif) atau ii) 12 atau iii) 42.Jika Anda juga ingin menghapus bidang yang ditambahkan oleh
cat -n
untuk mendapatkan baris asli dari file, Anda dapat melakukan:sumber