GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Unix Sed:Mencetak Baris File menggunakan Alamat dan Pola

Mari kita tinjau cara mencetak baris file menggunakan alamat dan pola di bagian pertama tutorial sed ini.

Kami akan memposting beberapa tutorial sed yang mengagumkan dengan contoh dalam beberapa minggu mendatang.

Pengenalan Unix Sed

  • sed adalah editor berorientasi aliran "non-interaktif". Karena bersifat "non-interaktif", ini dapat digunakan untuk mengotomatiskan pengeditan jika diinginkan.
  • Nama sed adalah singkatan dari stream editor, dan utilitas ini mendapatkan banyak perintahnya dari ed line-editor (ed adalah editor teks UNIX pertama).
  • Ini memungkinkan Anda mengedit banyak file, atau melakukan operasi pengeditan umum tanpa harus membuka vi atau emacs.
  • sed membaca dari file atau dari input standarnya, dan mengeluarkan output ke output standarnya.
  • sed memiliki dua buffer yang disebut pattern buffer dan hold buffer. Keduanya awalnya kosong.

Metodologi Kerja Unix Sed

Ini disebut sebagai satu siklus eksekusi. Siklus berlanjut hingga akhir file/input tercapai.

  1. Baca seluruh baris dari stdin/file.
  2. Menghapus baris baru yang tertinggal.
  3. Menempatkan garis, dalam buffer polanya.
  4. Ubah buffer pola sesuai dengan perintah yang diberikan.
  5. Cetak buffer pola ke stdout.

Operasi Pencetakan di Sed

Perintah Linux Sed memungkinkan Anda untuk mencetak hanya baris tertentu berdasarkan nomor baris atau pola yang cocok. “p” adalah perintah untuk mencetak data dari buffer pola.

Untuk menekan pencetakan otomatis ruang pola, gunakan perintah -n dengan sed. sed -n option tidak akan mencetak apa pun, kecuali jika permintaan eksplisit untuk mencetak ditemukan.

Syntax:
# sed -n 'ADDRESS'p filename

# sed -n '/PATTERN/p' filename

Mari kita buat file geekstuff.txt terlebih dahulu yang akan digunakan dalam semua contoh yang disebutkan di bawah.

# cat thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Contoh Format ALAMAT 5 Sed

Format Alamat Sed 1:NUMBER

Ini hanya akan cocok dengan baris ke-N di input.

# sed -n ‘N’p filename

Misalnya, 3p mencetak baris ketiga dari file input thegeekstuff.txt seperti yang ditunjukkan di bawah ini.

# sed -n '3'p thegeekstuff.txt
3. Hardware

Format Alamat Sed 2:NUMBER1~NUMBER2

M~N dengan perintah “p” mencetak setiap baris ke-N mulai dari baris M.

# sed -n ‘M~N’p nama file

Misalnya, 3~2p mencetak setiap baris ke-2 mulai dari baris ke-3 seperti yang ditunjukkan di bawah ini.

# sed -n '3~2'p thegeekstuff.txt
3. Hardware
5. Storage
7. Productivity (Too many technologies to explore, not much time available)
9. Software Development

Format Alamat Sed 3:MULAI,AKHIR

M,N dengan perintah “p” mencetak baris ke-M ke baris ke-N.

# sed -n ‘M,N’p nama file

Misalnya, 4,8p mencetak dari baris ke-4 ke baris ke-8 dari file input thegeekstuff.txt

# sed -n '4,8'p thegeekstuff.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Format Alamat Sed 4:Baris Terakhir ‘$’

$ dengan perintah “p” hanya cocok dengan baris terakhir dari input.

# sed -n ‘$’p filename

Misalnya, $p hanya mencetak baris terakhir seperti yang ditunjukkan di bawah ini.

# sed -n '$'p thegeekstuff.txt
10.Windows- Sysadmin, reboot etc.

Format Alamat Sed 5:NUMBER,$

N,$ dengan perintah “p” mencetak dari baris ke-N ke akhir file.

# sed -n ‘N,$p’ nama file

Misalnya 4,$p mencetak dari baris ke-4 hingga akhir file.

# sed -n '4,$p' thegeekstuff.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

6 Contoh Format POLA Sed

Format Pola Sed 1:POLA

POLA bisa berupa ekspresi reguler unix. Perintah di bawah ini hanya mencetak baris yang cocok dengan pola yang diberikan.

# sed -n /PATTERN/p nama file

Misalnya, mengikuti hanya mencetak baris yang cocok dengan pola “Sysadmin”.

# sed -n /Sysadmin/p thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
10.Windows- Sysadmin, reboot etc.

Format Pola Sed 2:/PATTERN/,ADDRESS


# sed -n ‘/PATTERN/,Np’ nama file

Misalnya, berikut ini mencetak garis yang cocok dengan pola ke baris ke-N, dari input. Baris ke-3 cocok dengan pola “Perangkat Keras”, sehingga tercetak dari baris ke-3 hingga ke baris ke-6.

# sed -n '/Hardware/,6p' thegeekstuff.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites

Format Pola Sed 3:ALAMAT,/PATTERN/

Ini mencetak dari baris ke-N input, ke baris yang cocok dengan polanya. Jika polanya tidak cocok, pola akan dicetak hingga akhir input.

# sed -n ‘N,/PATTERN/p’ nama file

Misalnya, baris ke-4 cocok dengan pola “Keamanan”, sehingga tercetak dari baris ke-3 ke baris ke-4.

# sed -n '3,/Security/p' thegeekstuff.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)

Format Pola Sed 4:/PATTERN/,$

Mencetak dari baris cocok dengan pola yang diberikan ke akhir file.

# sed -n ‘/PATTERN/,$p’ nama file

# sed -n '/Website/,$p' thegeekstuff.txt
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Format Pola Sed 5:/PATTERN/,+N

Ini mencetak garis yang cocok dengan pola dan N baris berikutnya mengikuti garis yang cocok.

# sed -n ‘/PATTERN/,+Np’ nama file

Misalnya, berikut akan mencetak baris ke-5 yang cocok dengan pola /Storage/ dan dua baris berikutnya setelah /Storage/.

# sed -n '/Storage/,+2p' thegeekstuff.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

Format Pola Sed 6:/PATTERN/,/PATTERN/

Mencetak bagian file di antara dua ekspresi reguler (termasuk baris yang cocok ).

# sed -n ‘/P1/,/P2/p’ nama file

Misalnya, baris ke-5 cocok dengan "Penyimpanan" dan baris ke-8 cocok dengan "Desain", jadi baris ke-5 sampai ke-8.

# sed -n '/Storage/,/Design/p' thegeekstuff.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Linux
  1. Cetak Garis Antara (dan Tidak Termasuk) Dua Pola?

  2. Cetak Garis Antara (dan Termasuk) Dua Pola?

  3. Ekstrak Nilai Antara Dua Pola Pencarian Pada Baris Yang Sama?

  1. Menghapus Baris Tertentu dari File di Baris Perintah Linux

  2. Cara Menghitung baris dalam file di UNIX/Linux

  3. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed

  1. Menggunakan sed untuk menemukan dan mengganti file teks di Linux

  2. Ganti Baris Dengan Konten Lain Menggunakan Sed Dan Paralel Untuk File Besar?

  3. ganti baris dalam satu file dengan baris lain dengan nomor baris