Bagaimana cara saya mengurutkan menggunakan perintah grep dan sortir?


14

Saya ingin membuat daftar diurutkan dari semua layanan TCP yang ditemukan dalam file /etc/services, pipa output dari perintah grep tcp /etc/serviceske perintah sort, kemudian mengarahkan output pipa ini ke file ~/pipelab.txt.

Saya terus mendapatkan pesan kesalahan bahwa output saya salah, dan saya tidak tahu mengapa.

Inilah yang saya coba terakhir:

grep tcp /etc/services > ~/pipelab.txt | sort

Jawaban:


11

> ~/pipelab.txtjelas milik perintah di sisi yang sama dari operator pipa |. Ie Anda mengarahkan grepoutput ke file, bukan pipa ke sort:

grep tcp /etc/services | sort > ~/pipelab.txt

21

Anda mencoba mengalihkan output grepke file dan mengirimkannya ke pipa sort. Anda tidak dapat melakukan itu, setidaknya tidak seperti itu.

Sebagai gantinya, Anda benar-benar hanya ingin memberi makan untuk menyortir:

grep tcp /etc/services | sort

dan kemudian Anda ingin mengarahkan output yang diurutkan (yaitu, apa yang keluar dari sortir) ke file, jadi Anda meletakkan redirect setelah diurutkan:

grep tcp /etc/services | sort > ~/pipelab.txt

Kedua pipa dan pengalihan bekerja dengan mengubah ke mana output dari perintah berjalan. Anda memiliki dua dari mereka berebut keluaran grep(dan akhirnya, redirect menang, dan menulis keluaran yang tidak disortir ke file Anda).


Terima kasih banyak, saya pikir selama saya meletakkan perintah sortir di mana saja itu masih berfungsi.
user72510

1
@ user72510 Pipa diproses secara berurutan, dari kiri ke kanan. Itu sebenarnya berguna, misalnya jika Anda ingin lima baris pertama dari output yang diurutkan, Anda bisa melakukannya grep tcp /etc/services | sort | head -n 5. Yang penting sortdilakukan sebelum head, atau Anda tidak akan mendapatkan garis yang Anda inginkan.
derobert

Terima kasih telah menjelaskannya. Saya mengambil kelas online jadi saya belajar sendiri. Menambahkan bahwa saya berusia 40 tahun itu adalah pembelajaran yang lambat.
user72510
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.