Unix / Linux - Pipa dan Filter
Pada bab ini, kita akan membahas secara detail tentang pipa dan filter di Unix. Anda dapat menghubungkan dua perintah secara bersamaan sehingga keluaran dari satu program menjadi masukan program berikutnya. Dua atau lebih perintah yang dihubungkan dengan cara ini membentuk pipa.
Untuk membuat pipa, letakkan batang vertikal (|) pada baris perintah di antara dua perintah.
Ketika sebuah program mengambil masukannya dari program lain, ia melakukan beberapa operasi pada masukan itu, dan menulis hasilnya ke keluaran standar. Ini disebut sebagai afilter.
Perintah grep
Perintah grep mencari file atau file untuk baris yang memiliki pola tertentu. Sintaksnya adalah -
$grep pattern file(s)
Nama "grep" berasal dari perintah ed (editor baris Unix) g/re/p yang berarti "menelusuri ekspresi reguler secara global dan mencetak semua baris yang memuatnya".
Ekspresi reguler adalah beberapa teks biasa (kata, misalnya) dan / atau karakter khusus yang digunakan untuk pencocokan pola.
Penggunaan grep yang paling sederhana adalah mencari pola yang terdiri dari satu kata. Ini dapat digunakan dalam pipa sehingga hanya baris dari file input yang berisi string tertentu yang dikirim ke output standar. Jika Anda tidak memberi nama file pada grep untuk dibaca, grep membaca input standarnya; begitulah cara semua program filter bekerja -
$ls -l | grep "Aug"
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
Ada berbagai opsi yang dapat Anda gunakan bersama dengan grep perintah -
Sr.No. | Opsi & Deskripsi |
---|---|
1 | -v Mencetak semua garis yang tidak cocok dengan pola. |
2 | -n Mencetak garis yang cocok dan nomor barisnya. |
3 | -l Mencetak hanya nama file dengan baris yang cocok (huruf "l") |
4 | -c Mencetak hanya jumlah garis yang cocok. |
5 | -i Cocok dengan huruf besar atau kecil. |
Sekarang mari kita menggunakan ekspresi reguler yang memberi tahu grep untuk mencari baris "carol", diikuti dengan nol atau karakter lain yang disingkat dalam ekspresi reguler sebagai ". *"), lalu diikuti oleh "Agustus" .−
Di sini, kami menggunakan -i pilihan untuk memiliki pencarian case insensitive -
$ls -l | grep -i "carol.*aug"
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
Perintah sortir
Itu sortperintah mengatur baris teks menurut abjad atau numerik. Contoh berikut mengurutkan baris dalam file makanan -
$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$
Itu sortperintah mengatur baris teks menurut abjad secara default. Ada banyak opsi yang mengontrol pengurutan -
Sr.No. | Deskripsi |
---|---|
1 | -n Mengurutkan secara numerik (contoh: 10 akan mengurutkan setelah 2), mengabaikan kosong dan tab. |
2 | -r Membalik urutan pengurutan. |
3 | -f Mengurutkan huruf besar dan kecil menjadi satu. |
4 | +x Abaikan dulu x bidang saat menyortir. |
Lebih dari dua perintah dapat dihubungkan menjadi pipa. Mengambil contoh pipa sebelumnya menggunakangrep, kami selanjutnya dapat mengurutkan file yang dimodifikasi pada bulan Agustus menurut urutan ukurannya.
Pipa berikut terdiri dari perintah ls, grep, dan sort -
$ls -l | grep "Aug" | sort +4n
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
$
Pipa ini mengurutkan semua file dalam direktori Anda yang dimodifikasi pada bulan Agustus menurut urutan ukurannya, dan mencetaknya di layar terminal. Opsi sortir + 4n melompati empat bidang (bidang dipisahkan dengan kosong) lalu mengurutkan baris dalam urutan numerik.
Pg dan lebih banyak Perintah
Output panjang biasanya dapat di-zip oleh Anda di layar, tetapi jika Anda menjalankan teks lebih banyak atau menggunakan ekstensi pgperintah sebagai filter; tampilan akan berhenti setelah layar penuh dengan teks.
Anggaplah Anda memiliki daftar direktori yang panjang. Untuk membuatnya lebih mudah membaca daftar yang diurutkan, pipa keluaran melaluimore sebagai berikut -
$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03
.
.
.
-rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05
--More--(74%)
Layar akan terisi setelah layar penuh dengan teks yang terdiri dari baris-baris yang diurutkan berdasarkan urutan ukuran file. Di bagian bawah layar adalahmore prompt, di mana Anda dapat mengetikkan perintah untuk menelusuri teks yang diurutkan.
Setelah Anda selesai dengan layar ini, Anda dapat menggunakan salah satu perintah yang terdaftar dalam pembahasan program lainnya.