Belajar dengan membaca secara berurutan

sed — Substitusi dan Ekstraksi

Praktikkan sed: 's/a/X/' mengganti kecocokan pertama per baris dan g mengganti semua, -n '2p' mencetak satu baris tertentu, '/two/d' menghapus baris yang cocok, dan -i mengedit file langsung — lengkap dengan diagram visual dan terminal browser.

Mengganti Teks — s/old/new/ dan g

sed adalah stream editor: ia membaca input satu baris pada satu waktu, mengubahnya sesuai aturan yang kamu berikan, lalu mengeluarkan hasilnya. Tugas yang paling umum adalah substitusi, ditulis sebagai sed 's/old/new/'. s berarti substitute, / memisahkan bagian-bagiannya, dan ini mengganti old dengan new. Bagian old juga bisa menggunakan ekspresi reguler yang sudah kamu pelajari sebelumnya (^ $ . *).

Tanpa g di akhir, s/old/new/ hanya mengganti kecocokan pertama yang ditemukan pada setiap baris. Menambahkan g di akhir seperti s/old/new/g mengganti setiap posisi yang cocok pada baris tersebut.

BentukArtiContoh
s/old/new/Ganti hanya kecocokan pertama per barissed 's/a/X/' f
s/old/new/gGanti semua kecocokan pada barissed 's/a/X/g' f
Substitusi s vs flag g
sed 's/a/X/' fhanya a pertamaper baris -> Xsed 's/a/X/g' fsemua a di baris -> X
Tanpa g hanya kecocokan pertama pada baris yang berubah; dengan g semua kecocokan pada baris diganti.
printf 'aaa\nbbb\n' > s.txt   # buat file materi
sed 's/a/X/' s.txt             # hanya a pertama -> Xaa
sed 's/a/X/g' s.txt            # semua a -> XXX

① Buat file materi dua baris dengan printf 'aaa\nbbb\n' > s.txt.

② Jalankan substitusi sed dasar yang mengubah a menjadi X, dan periksa bahwa hanya karakter pertama pada setiap baris yang diganti.

③ Kemudian jalankan bentuk dengan flag di akhir yang melakukan substitusi di seluruh baris, dan periksa bahwa setiap a menjadi X. (Jika kamu menjalankannya dengan benar, penjelasan akan muncul.)

Linux console
0 / 3 selesai
Loading Linux Terminal...

Mengekstrak dan Menghapus Baris — -n 'Np' dan /pat/d

sed -n 'Np' mencetak hanya baris N. Kamu memasukkan nomor baris yang ingin ditampilkan di tempat N (untuk baris 2, 2p). Karena sed mencetak setiap baris secara default, -n mematikan output otomatis tersebut, dan p (print) secara eksplisit menyatakan baris yang ingin ditampilkan. Jadi sed -n '2p' menghasilkan hanya baris kedua.

sed '/pat/d' menghapus baris yang cocok dengan pat dan mengeluarkan sisanya. d adalah delete, dan bagian /pat/ adalah kondisi yang memilih baris yang akan dihapus. Gunakan ini ketika kamu ingin membuang hanya baris yang mengandung kata tertentu dan melihat sisanya.

BentukArtiContoh
-n 'Np'Cetak hanya baris Nsed -n '2p' f
/pat/dHapus baris yang cocok dengan patsed '/two/d' f
Ekstrak dengan -n p vs hapus dengan /pat/d
sed -n '2p' ftampilkan baris 2saja (buang sisanya)sed '/two/d' fhapus baris two,keluarkan sisanya
-n 'Np' hanya mengambil baris yang ditentukan, sementara /pat/d mengeluarkan semua kecuali baris yang cocok.
printf 'one\ntwo\nthree\n' > lines.txt   # buat file materi
sed -n '2p' lines.txt                      # hanya baris 2, two
sed '/two/d' lines.txt                     # one dan three, tanpa baris two

① Buat file materi tiga baris dengan printf 'one\ntwo\nthree\n' > lines.txt.

② Gabungkan opsi yang mematikan output otomatis dengan direktif yang mencetak nomor baris tertentu, dan gunakan sed untuk menampilkan hanya baris kedua.

③ Kemudian gunakan direktif yang menghapus baris yang cocok untuk menampilkan sisanya dengan baris yang mengandung two dihapus.

Linux console
0 / 3 selesai
Loading Linux Terminal...

Mengedit File Langsung — sed -i

Sejauh ini sed hanya mencetak hasil ke layar, dan file asli tidak berubah. Menambahkan sed -i mengedit file secara langsung dengan hasilnya. Ini berguna untuk penggantian massal di file konfigurasi, tetapi karena konten asli tidak disimpan, setelah penulisan ulang sebaiknya gunakan cat untuk memeriksa isinya.

BentukArtiContoh
-iEdit file secara langsungsed -i 's/a/Z/' f
sed -i mengubah file, bukan layar
sed 's/a/Z/' fhasil dicetak(f tidak berubah)sed -i 's/a/Z/' ff itu sendiriditulis ulang
Tanpa -i hanya mencetak ke layar; dengan -i file itu sendiri yang ditulis ulang.

sed -i tidak bisa dibatalkan

sed -i menulis ulang file di tempat dan tidak menyimpan konten aslinya. Sebelum menggunakannya pada file konfigurasi sungguhan, cara aman adalah menjalankannya terlebih dahulu tanpa -i, periksa hasilnya di layar, konfirmasi bahwa hasilnya sesuai yang kamu inginkan, baru kemudian tambahkan -i.

printf 'apple\nbanana\n' > fruit.txt   # buat file materi
sed -i 's/apple/cherry/' fruit.txt      # edit file secara langsung
cat fruit.txt                            # cek cherry dan banana

① Buat file materi dua baris dengan printf 'apple\nbanana\n' > fruit.txt.

② Menggunakan substitusi sed dengan opsi yang mengedit file secara langsung, ubah apple menjadi cherry.

③ Jalankan cat fruit.txt dan periksa bahwa file itu sendiri telah ditulis ulang menjadi cherry dan banana.

Linux console
0 / 3 selesai
Loading Linux Terminal...
QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Bagaimana sed 's/a/X/' f berperilaku pada setiap baris?

Soal 2Apa yang ditampilkan saat menjalankan sed -n '2p' f?

Soal 3Apa yang dilakukan -i pada sed -i 's/a/Z/' f?