Izin diberikan untuk menyalin, mendistribusikan dan/atau memodifikasi dokumen ini di bawah ketentuan Lisensi Dokumentasi Bebas GNU, Versi 1. 3 atau versi selanjutnya yang diterbitkan oleh Free Software Foundation; . Salinan lisensi disertakan dalam bagian yang berjudul “Lisensi Dokumentasi Bebas GNU” Show
1. Perkenalansed -i 's/hello/world/' file.txt22 adalah editor aliran. Editor aliran digunakan untuk melakukan transformasi teks dasar pada aliran input (file atau input dari saluran pipa). Meskipun dalam beberapa hal mirip dengan editor yang mengizinkan pengeditan dengan skrip (seperti sed -i 's/hello/world/' file.txt24), sed -i 's/hello/world/' file.txt22 bekerja dengan hanya membuat satu kali masukan, dan karenanya lebih efisien. Tetapi kemampuan sed -i 's/hello/world/' file.txt_22 untuk memfilter teks dalam saluran yang secara khusus membedakannya dari jenis editor lainnya 2 Menjalankan sedBab ini membahas cara menjalankan sed -i 's/hello/world/' file.txt_22. Rincian sed -i 's/hello/world/' file.txt_22 skrip dan sed -i 's/hello/world/' file.txt22 perintah individu dibahas di bab berikutnya 2. 1 IkhtisarBiasanya sed -i 's/hello/world/' file.txt_22 dipanggil seperti ini Misalnya, untuk mengganti semua kemunculan 'halo' menjadi 'dunia' di input file. txt sed 's/hello/world/' input.txt > output.txt_ Jika Anda tidak menentukan INPUTFILE, atau jika INPUTFILE adalah -, sed -i 's/hello/world/' file.txt22 memfilter konten input standar. Perintah berikut ini setara sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt sed -i 's/hello/world/' file.txt22 menulis keluaran ke keluaran standar. Gunakan -i untuk mengedit file di tempat alih-alih mencetak ke keluaran standar. Lihat juga sed -i 's/hello/world/' file.txt33 dan sed -i 's/hello/world/' file.txt34 perintah untuk menulis output ke file lain. Perintah berikut memodifikasi file. txt dan tidak menghasilkan output apapun sed -i 's/hello/world/' file.txt Secara default sed -i 's/hello/world/' file.txt_22 mencetak semua input yang diproses (kecuali input yang telah dimodifikasi/dihapus oleh perintah seperti sed -i 's/hello/world/' file.txt36). Gunakan -n untuk menekan keluaran, dan perintah sed -i 's/hello/world/' file.txt37 untuk mencetak baris tertentu. Perintah berikut hanya mencetak baris 45 dari file input sed -i 's/hello/world/' file.txt22 memperlakukan banyak file input sebagai satu aliran panjang. Contoh berikut mencetak baris pertama dari file pertama (one. txt) dan baris terakhir dari file terakhir (tiga. txt). Gunakan -s untuk membalikkan perilaku ini sed -n '1p ; $p' one.txt two.txt three.txt Tanpa opsi -e atau -f, sed -i 's/hello/world/' file.txt_22 menggunakan parameter non-opsi pertama sebagai skrip, dan parameter non-opsi berikut sebagai file input. Jika opsi -e atau -f digunakan untuk menentukan skrip, semua parameter non-opsi diambil sebagai file masukan. Opsi -e dan -f dapat digabungkan, dan dapat muncul berkali-kali (dalam hal ini skrip akhir yang efektif akan menjadi gabungan dari semua skrip individual) Contoh berikut setara sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt 2. 2 Opsi Baris PerintahFormat lengkap untuk memanggil sed -i 's/hello/world/' file.txt_22 adalah sed OPTIONS.. [SCRIPT] [INPUTFILE...] sed -i 's/hello/world/' file.txt22 dapat dipanggil dengan opsi baris perintah berikut sed -i 's/hello/world/' file.txt_42 Cetak versi sed -i 's/hello/world/' file.txt_22 yang sedang dijalankan dan pemberitahuan hak cipta, lalu keluar sed -i 's/hello/world/' file.txt_44 Cetak pesan penggunaan yang merangkum secara singkat opsi baris perintah ini dan alamat pelaporan bug, lalu keluar sed -i 's/hello/world/' file.txt45 sed -i 's/hello/world/' file.txt46 sed -i 's/hello/world/' file.txt47 Secara default, sed -i 's/hello/world/' file.txt_22 mencetak ruang pola pada akhir setiap siklus melalui skrip (lihat ). Opsi ini menonaktifkan pencetakan otomatis ini, dan sed -i 's/hello/world/' file.txt22 hanya menghasilkan output ketika secara eksplisit disuruh melalui perintah sed -i 's/hello/world/' file.txt37 sed -i 's/hello/world/' file.txt_52 Cetak program input sed dalam bentuk kanonis, dan anotasi eksekusi program $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3 sed -i 's/hello/world/' file.txt53 sed -i 's/hello/world/' file.txt54 Tambahkan perintah dalam skrip ke kumpulan perintah untuk dijalankan saat memproses input sed -i 's/hello/world/' file.txt55 sed -i 's/hello/world/' file.txt56 Tambahkan perintah yang terdapat dalam file skrip-file ke kumpulan perintah yang akan dijalankan saat memproses input sed -i 's/hello/world/' file.txt57 sed -i 's/hello/world/' file.txt58 Opsi ini menentukan bahwa file akan diedit di tempat. GNU sed -i 's/hello/world/' file.txt_22 melakukan ini dengan membuat file sementara dan mengirimkan output ke file ini daripada ke output standar Opsi ini menyiratkan -s Saat akhir file tercapai, file sementara diganti namanya menjadi nama asli file keluaran. Ekstensi, jika disediakan, digunakan untuk mengubah nama file lama sebelum mengganti nama file sementara, sehingga membuat salinan cadangan) Aturan ini diikuti. jika ekstensi tidak berisi sed -i 's/hello/world/' file.txt60, ekstensi ditambahkan ke akhir nama file saat ini sebagai sufiks; . Ini memungkinkan Anda untuk menambahkan awalan ke file cadangan, alih-alih (atau sebagai tambahan) akhiran, atau bahkan menempatkan salinan cadangan dari file asli ke direktori lain (asalkan direktori tersebut sudah ada) Jika tidak ada ekstensi yang disediakan, file asli akan ditimpa tanpa membuat cadangan Karena -i mengambil argumen opsional, seharusnya tidak diikuti oleh opsi singkat lainnya sed -i 's/hello/world/' file.txt_62 Sama seperti -E -i tanpa akhiran cadangan - FILE akan diedit di tempat tanpa membuat cadangan sed -i 's/hello/world/' file.txt_63 Ini sama dengan --in-place=E, membuat FILE sebagai cadangan FILE Hati-hati menggunakan -n dengan -i. yang pertama menonaktifkan pencetakan garis otomatis dan yang terakhir mengubah file di tempat tanpa cadangan. Digunakan sembarangan (dan tanpa perintah sed -i 's/hello/world/' file.txt37 yang eksplisit), file keluaran akan kosong # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE sed -i 's/hello/world/' file.txt65 sed -i 's/hello/world/' file.txt66 Tentukan panjang pembungkus baris default untuk perintah sed -i 's/hello/world/' file.txt67. Panjang 0 (nol) berarti tidak pernah membungkus garis panjang. Jika tidak ditentukan, diambil menjadi 70 sed -i 's/hello/world/' file.txt_68 GNU sed -i 's/hello/world/' file.txt_22 menyertakan beberapa ekstensi ke POSIX sed. Untuk menyederhanakan penulisan skrip portabel, opsi ini menonaktifkan semua ekstensi yang didokumentasikan manual ini, termasuk perintah tambahan. Sebagian besar ekstensi menerima sed -i 's/hello/world/' file.txt22 program yang berada di luar sintaks yang diamanatkan oleh POSIX, tetapi beberapa di antaranya (seperti perilaku perintah sed -i 's/hello/world/' file.txt71 yang dijelaskan dalam ) sebenarnya melanggar standar. Jika Anda hanya ingin menonaktifkan jenis ekstensi yang terakhir, Anda dapat menyetel variabel sed -i 's/hello/world/' file.txt72 ke nilai yang tidak kosong sed -i 's/hello/world/' file.txt73 sed -i 's/hello/world/' file.txt74 Opsi ini tersedia di setiap platform, tetapi hanya efektif jika sistem operasi membedakan antara file teks dan file biner. Ketika perbedaan dibuat—seperti halnya MS-DOS, Windows, Cygwin—file teks terdiri dari baris yang dipisahkan oleh carriage return dan karakter line feed, dan sed -i 's/hello/world/' file.txt22 tidak melihat akhir CR. Ketika opsi ini ditentukan, sed -i 's/hello/world/' file.txt_22 akan membuka file input dalam mode biner, sehingga tidak meminta pemrosesan khusus ini dan mempertimbangkan baris untuk diakhiri pada umpan baris sed -i 's/hello/world/' file.txt_77 Opsi ini hanya tersedia pada platform yang mendukung tautan simbolik dan hanya berpengaruh jika opsi -i ditentukan. Dalam hal ini, jika file yang ditentukan pada baris perintah adalah tautan simbolis, sed -i 's/hello/world/' file.txt22 akan mengikuti tautan dan mengedit tujuan akhir tautan. Perilaku default adalah memutus tautan simbolik, sehingga tujuan tautan tidak akan diubah sed -i 's/hello/world/' file.txt79 sed -i 's/hello/world/' file.txt80 sed -i 's/hello/world/' file.txt81 Gunakan ekspresi reguler yang diperluas daripada ekspresi reguler dasar. Regexp yang diperluas adalah yang sed -i 's/hello/world/' file.txt82 menerima; . Secara historis ini adalah ekstensi GNU, tetapi ekstensi -E telah ditambahkan ke standar POSIX (http. //austingroupbugs. bersih/tampilan. php?id=528), jadi gunakan -E untuk portabilitas. GNU sed telah menerima -E sebagai opsi tidak berdokumen selama bertahun-tahun, dan *BSD seds telah menerima -E selama bertahun-tahun juga, tetapi skrip yang menggunakan -E mungkin tidak dapat di-port ke sistem lama lainnya. Lihat sed -i 's/hello/world/' file.txt83 sed -i 's/hello/world/' file.txt84 Secara default, sed -i 's/hello/world/' file.txt_22 akan menganggap file yang ditentukan pada baris perintah sebagai satu aliran panjang berkelanjutan. Ekstensi sed -i 's/hello/world/' file.txt_22 GNU ini memungkinkan pengguna untuk menganggapnya sebagai file terpisah. rentang alamat (seperti '/abc/,/def/') tidak diperbolehkan menjangkau beberapa file, nomor baris relatif terhadap awal setiap file, sed -i 's/hello/world/' file.txt87 merujuk ke baris terakhir setiap file, dan file dipanggil dari sed -i 's/hello/world/' file.txt88 sed -i 's/hello/world/' file.txt_89 Dalam mode kotak pasir, sed -i 's/hello/world/' file.txt90 perintah ditolak - program yang berisi perintah tersebut akan dibatalkan tanpa dijalankan. Mode kotak pasir memastikan sed -i 's/hello/world/' file.txt22 hanya beroperasi pada file input yang ditentukan pada baris perintah, dan tidak dapat menjalankan program eksternal sed -i 's/hello/world/' file.txt_92 sed -i 's/hello/world/' file.txt93 Buffer input dan output seminimal mungkin. (Ini sangat berguna jika input berasal dari 'tail -f', dan Anda ingin melihat output yang diubah sesegera mungkin. ) sed -i 's/hello/world/' file.txt_94 sed -i 's/hello/world/' file.txt95 sed -i 's/hello/world/' file.txt96 Perlakukan input sebagai satu set baris, masing-masing diakhiri dengan nol byte (karakter ASCII 'NUL') alih-alih baris baru. Opsi ini dapat digunakan dengan perintah seperti 'sort -z' dan 'find -print0' untuk memproses nama file arbitrer Jika tidak ada opsi -e, -f, --expression, atau --file yang diberikan pada baris perintah, maka argumen non-opsi pertama pada baris perintah akan dianggap sebagai skrip yang akan dieksekusi Jika ada parameter baris perintah yang tersisa setelah pemrosesan di atas, parameter ini ditafsirkan sebagai nama file input yang akan diproses. Nama file '-' mengacu pada aliran input standar. Input standar akan diproses jika tidak ada nama file yang ditentukan 2. 3 Keluar statusStatus keluar nol menunjukkan keberhasilan, dan nilai bukan nol menunjukkan kegagalan. GNU sed -i 's/hello/world/' file.txt_22 mengembalikan nilai kesalahan status keluar berikut0 Penyelesaian yang berhasil 1Perintah tidak valid, sintaks tidak valid, ekspresi reguler tidak valid atau perintah ekstensi ________0______22 GNU digunakan dengan --posix 2Satu atau lebih file input yang ditentukan pada baris perintah tidak dapat dibuka (mis. g. jika file tidak ditemukan, atau izin baca ditolak). Pemrosesan dilanjutkan dengan file lain 4Kesalahan I/O, atau kesalahan pemrosesan yang serius selama runtime, GNU sed -i 's/hello/world/' file.txt22 segera dibatalkan Selain itu, perintah sed -n '1p ; $p' one.txt two.txt three.txt00 dan sed -n '1p ; $p' one.txt two.txt three.txt01 dapat digunakan untuk mengakhiri sed -i 's/hello/world/' file.txt22 dengan nilai kode keluar khusus (ini adalah ekstensi sed -i 's/hello/world/' file.txt22 GNU) $ echo | sed 'Q42' ; echo $? 42 3 sed -i 's/hello/world/' file.txt _22 skrip3. 1 sed -i 's/hello/world/' file.txt _22 ikhtisar skripProgram sed -i 's/hello/world/' file.txt_22 terdiri dari satu atau lebih sed -i 's/hello/world/' file.txt22 perintah, diteruskan oleh satu atau lebih opsi -e, -f, --expression, dan --file, atau argumen non-opsi pertama jika nol dari opsi ini digunakan. Dokumen ini akan mengacu pada skrip sed -i 's/hello/world/' file.txt22 "the"; . Lihat sed -i 's/hello/world/' file.txt_22 perintah mengikuti sintaks ini X adalah perintah sed -i 's/hello/world/' file.txt22 huruf tunggal. sed -n '1p ; $p' one.txt two.txt three.txt_11 adalah alamat baris opsional. Jika sed -n '1p ; $p' one.txt two.txt three.txt_11 ditentukan, perintah X akan dijalankan hanya pada baris yang cocok. sed -n '1p ; $p' one.txt two.txt three.txt_11 dapat berupa nomor baris tunggal, ekspresi reguler, atau rentang baris (lihat ). ________19______14 tambahan digunakan untuk beberapa perintah sed -i 's/hello/world/' file.txt22 Contoh berikut menghapus baris 30 sampai 35 pada input. sed -n '1p ; $p' one.txt two.txt three.txt_16 adalah rentang alamat. sed -i 's/hello/world/' file.txt_36 adalah perintah hapus sed '30,35d' input.txt > output.txt Contoh berikut mencetak semua input hingga baris yang dimulai dengan kata 'foo' ditemukan. Jika baris tersebut ditemukan, sed -i 's/hello/world/' file.txt_22 akan berakhir dengan status keluar 42. Jika baris tersebut tidak ditemukan (dan tidak ada kesalahan lain yang terjadi), sed -i 's/hello/world/' file.txt22 akan keluar dengan status 0. sed -n '1p ; $p' one.txt two.txt three.txt_20 adalah alamat ekspresi reguler. sed -n '1p ; $p' one.txt two.txt three.txt_00 adalah perintah berhenti. sed -n '1p ; $p' one.txt two.txt three.txt_22 adalah opsi perintah sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_0 Perintah dalam skrip atau file skrip dapat dipisahkan dengan titik koma ( sed -n '1p ; $p' one.txt two.txt three.txt23) atau baris baru (ASCII 10). Beberapa skrip dapat ditentukan dengan opsi -e atau -f Contoh berikut semuanya setara. Mereka melakukan dua sed -i 's/hello/world/' file.txt_22 operasi. menghapus semua baris yang cocok dengan ekspresi reguler sed -n '1p ; $p' one.txt two.txt three.txt20, dan mengganti semua kemunculan string 'halo' dengan 'dunia' sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_1 Perintah sed -n '1p ; $p' one.txt two.txt three.txt26, sed -n '1p ; $p' one.txt two.txt three.txt27, sed -n '1p ; $p' one.txt two.txt three.txt28, karena sintaksnya, tidak dapat diikuti oleh titik koma yang berfungsi sebagai pemisah perintah dan karenanya harus diakhiri dengan baris baru atau ditempatkan di akhir skrip atau file skrip. Perintah juga dapat didahului dengan karakter spasi non-signifikan opsional. Lihat 3. 2 sed -i 's/hello/world/' file.txt _22 ringkasan perintahPerintah berikut didukung di GNU sed -i 's/hello/world/' file.txt22. Beberapa adalah perintah POSIX standar, sementara yang lain adalah ekstensi GNU. Detail dan contoh untuk setiap perintah ada di bagian berikut. (Mnemonik) ditampilkan dalam tanda kurung sed -n '1p ; $p' one.txt two.txt three.txt_31 sed -n '1p ; $p' one.txt two.txt three.txt32 Tambahkan teks setelah satu baris sed -n '1p ; $p' one.txt two.txt three.txt_33 Tambahkan teks setelah baris (sintaksis alternatif) sed -n '1p ; $p' one.txt two.txt three.txt_34 Cabang tanpa syarat untuk memberi label. Label dapat dihilangkan, dalam hal ini siklus berikutnya dimulai sed -n '1p ; $p' one.txt two.txt three.txt_35 sed -n '1p ; $p' one.txt two.txt three.txt32 Ganti (ganti) baris dengan teks sed -n '1p ; $p' one.txt two.txt three.txt_37 Ganti (ubah) baris dengan teks (sintaks alternatif) sed -i 's/hello/world/' file.txt_36 Hapus ruang pola; sed -n '1p ; $p' one.txt two.txt three.txt_39 Jika ruang pola berisi baris baru, hapus teks di ruang pola hingga baris baru pertama, dan mulai ulang siklus dengan ruang pola yang dihasilkan, tanpa membaca baris input baru Jika ruang pola tidak berisi baris baru, mulailah siklus baru yang normal seolah-olah perintah ________0______36 dikeluarkan sed -n '1p ; $p' one.txt two.txt three.txt_41 Jalankan perintah yang ditemukan di ruang pola dan ganti ruang pola dengan output; sed -n '1p ; $p' one.txt two.txt three.txt_42 Mengeksekusi perintah dan mengirimkan outputnya ke aliran output. Perintah dapat dijalankan melintasi beberapa baris, semuanya kecuali yang terakhir diakhiri dengan garis miring terbalik sed -n '1p ; $p' one.txt two.txt three.txt_43 (nama file) Cetak nama file dari file input saat ini (dengan baris baru yang tertinggal) sed -n '1p ; $p' one.txt two.txt three.txt_44 Ganti isi ruang pola dengan isi ruang tunggu sed -n '1p ; $p' one.txt two.txt three.txt_45 Tambahkan baris baru ke konten ruang pola, lalu tambahkan konten ruang penahan ke konten ruang pola sed -n '1p ; $p' one.txt two.txt three.txt_46 (tahan) Ganti isi ruang tunggu dengan isi ruang pola sed -n '1p ; $p' one.txt two.txt three.txt_47 Tambahkan baris baru ke konten ruang tunggu, lalu tambahkan konten ruang pola ke konten ruang tunggu sed -n '1p ; $p' one.txt two.txt three.txt_48 sed -n '1p ; $p' one.txt two.txt three.txt32 menyisipkan teks sebelum baris sed -n '1p ; $p' one.txt two.txt three.txt_50 menyisipkan teks sebelum baris (sintaksis alternatif) sed -i 's/hello/world/' file.txt_67 Cetak ruang pola dalam bentuk yang tidak ambigu sed -n '1p ; $p' one.txt two.txt three.txt_52 (berikutnya) Jika cetak otomatis tidak dinonaktifkan, cetak ruang pola, lalu, terlepas dari itu, ganti ruang pola dengan baris input berikutnya. Jika tidak ada input lagi maka sed -i 's/hello/world/' file.txt_22 keluar tanpa memproses perintah lagi sed -i 's/hello/world/' file.txt_71 Tambahkan baris baru ke ruang pola, lalu tambahkan baris input berikutnya ke ruang pola. Jika tidak ada input lagi maka sed -i 's/hello/world/' file.txt_22 keluar tanpa memproses perintah lagi sed -i 's/hello/world/' file.txt_37 Cetak ruang pola sed -n '1p ; $p' one.txt two.txt three.txt_57 Cetak ruang pola, hingga yang pertama sed -n '1p ; $p' one.txt two.txt three.txt_58 (keluar) Keluar dari sed -i 's/hello/world/' file.txt_22 tanpa memproses perintah atau masukan lagi sed -n '1p ; $p' one.txt two.txt three.txt_60 (keluar) Perintah ini sama dengan sed -n '1p ; $p' one.txt two.txt three.txt00, tetapi tidak akan mencetak isi ruang pola. Seperti sed -n '1p ; $p' one.txt two.txt three.txt_00, ini memberikan kemampuan untuk mengembalikan kode keluar ke penelepon sed -n '1p ; $p' one.txt two.txt three.txt_63 Membaca nama file file sed -n '1p ; $p' one.txt two.txt three.txt_64 Antrean baris nama file untuk dibaca dan dimasukkan ke dalam aliran output pada akhir siklus saat ini, atau saat baris input berikutnya dibaca sed -n '1p ; $p' one.txt two.txt three.txt_65 (pengganti) Cocokkan ekspresi reguler dengan konten ruang pola. Jika ditemukan, ganti string yang cocok dengan pengganti sed -n '1p ; $p' one.txt two.txt three.txt_66 (tes) Cabang untuk memberi label hanya jika telah ada sed -n '1p ; $p' one.txt two.txt three.txt67substitusi yang berhasil sejak baris input terakhir dibaca atau cabang bersyarat diambil. Label dapat dihilangkan, dalam hal ini siklus berikutnya dimulai sed -n '1p ; $p' one.txt two.txt three.txt_68 (tes) Cabang untuk memberi label hanya jika tidak ada sed -n '1p ; $p' one.txt two.txt three.txt67pergantian yang berhasil sejak baris input terakhir dibaca atau cabang bersyarat diambil. Label dapat dihilangkan, dalam hal ini siklus berikutnya dimulai sed -n '1p ; $p' one.txt two.txt three.txt_70 (versi) Perintah ini tidak melakukan apa-apa, tetapi membuat sed -i 's/hello/world/' file.txt22 gagal jika ekstensi GNU sed -i 's/hello/world/' file.txt22 tidak didukung, atau jika versi yang diminta tidak tersedia sed -n '1p ; $p' one.txt two.txt three.txt_73 Tulis ruang pola ke nama file sed -n '1p ; $p' one.txt two.txt three.txt_74 Tulis ke nama file yang diberikan bagian dari ruang pola hingga baris baru pertama sed -n '1p ; $p' one.txt two.txt three.txt75 Tukarkan isi ruang penangguhan dan pola sed -n '1p ; $p' one.txt two.txt three.txt_76 Transliterasi karakter apa pun dalam ruang pola yang cocok dengan salah satu karakter sumber dengan karakter yang sesuai dalam karakter tujuan sed -n '1p ; $p' one.txt two.txt three.txt_77 (zap) Perintah ini mengosongkan isi ruang pola sed -n '1p ; $p' one.txt two.txt three.txt_78 Sebuah komentar, hingga baris baru berikutnya sed -n '1p ; $p' one.txt two.txt three.txt_79 Kelompokkan beberapa perintah bersama sed -n '1p ; $p' one.txt two.txt three.txt_80 Cetak nomor baris input saat ini (dengan baris baru di belakang) sed -n '1p ; $p' one.txt two.txt three.txt_81 Tentukan lokasi label untuk perintah cabang ( sed -n '1p ; $p' one.txt two.txt three.txt82, sed -n '1p ; $p' one.txt two.txt three.txt83, sed -n '1p ; $p' one.txt two.txt three.txt84) 3. 3 Perintah sed -n '1p ; $p' one.txt two.txt three.txt _67Perintah sed -n '1p ; $p' one.txt two.txt three.txt_67 (sebagai pengganti) mungkin yang paling penting di sed -i 's/hello/world/' file.txt22 dan memiliki banyak opsi berbeda. Sintaks perintah sed -n '1p ; $p' one.txt two.txt three.txt_67 adalah 's/regexp/replacement/flags' Konsep dasarnya sederhana. perintah sed -n '1p ; $p' one.txt two.txt three.txt_67 mencoba mencocokkan ruang pola dengan regexp ekspresi reguler yang disediakan; Untuk detail tentang sintaks regexp lihat Pengganti dapat berisi referensi sed -n '1p ; $p' one.txt two.txt three.txt90 (n adalah angka dari 1 sampai 9, inklusif), yang mengacu pada porsi kecocokan yang terdapat antara tanggal sed -n '1p ; $p' one.txt two.txt three.txt91 dan pencocokannya sed -n '1p ; $p' one.txt two.txt three.txt92. Juga, penggantian dapat berisi sed -n '1p ; $p' one.txt two.txt three.txt93 karakter yang tidak lolos yang mereferensikan seluruh bagian yang cocok dari ruang pola sed -n '1p ; $p' one.txt two.txt three.txt_94 karakter dapat diganti secara seragam oleh karakter tunggal lainnya dalam perintah sed -n '1p ; $p' one.txt two.txt three.txt67 yang diberikan. Karakter sed -n '1p ; $p' one.txt two.txt three.txt_94 (atau karakter lain apa pun yang digunakan sebagai gantinya) dapat muncul di regexp atau penggantian hanya jika didahului oleh karakter sed -n '1p ; $p' one.txt two.txt three.txt97 Terakhir, sebagai ekstensi sed -i 's/hello/world/' file.txt22 GNU, Anda dapat menyertakan urutan khusus yang terbuat dari garis miring terbalik dan salah satu huruf sed -n '1p ; $p' one.txt two.txt three.txt99, sed -i 's/hello/world/' file.txt67, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt01, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt02, atau sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt03. Artinya adalah sebagai berikut sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_04 Turn the replacement to lowercase until a sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt05 or sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt06 is found, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt07 Mengubah karakter berikutnya menjadi huruf kecil, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt05 Ubah pengganti menjadi huruf besar sampai sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt04 atau sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt06 ditemukan, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt11 Ubah karakter berikutnya menjadi huruf besar, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_06 Stop case conversion started by sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt04 or sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt05 Saat bendera sed -n '1p ; $p' one.txt two.txt three.txt_44 digunakan, konversi huruf besar/kecil tidak menyebar dari satu kemunculan ekspresi reguler ke kemunculan lainnya. Misalnya, ketika perintah berikut dijalankan dengan 'a-b-' di ruang pola outputnya adalah 'axxB'. Saat mengganti '-' pertama, urutan '\ u' hanya memengaruhi penggantian kosong '\ 1'. Itu tidak memengaruhi sed -n '1p ; $p' one.txt two.txt three.txt_75 karakter yang ditambahkan ke ruang pola saat mengganti sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt17 dengan sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt18 Di sisi lain, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_07 dan sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt11 memengaruhi sisa teks pengganti jika diikuti dengan substitusi kosong. With ‘a-b-’ in pattern space, the following command akan mengganti '-' dengan 'X' (huruf besar) dan 'b-' dengan 'Bx'. Jika perilaku ini tidak diinginkan, Anda dapat mencegahnya dengan menambahkan urutan '\E'—setelah '\1' dalam kasus ini Untuk menyertakan sed -n '1p ; $p' one.txt two.txt three.txt97 literal, sed -n '1p ; $p' one.txt two.txt three.txt93, atau baris baru dalam penggantian akhir, pastikan untuk mendahului sed -n '1p ; $p' one.txt two.txt three.txt97, sed -n '1p ; $p' one.txt two.txt three.txt93 yang diinginkan, atau baris baru dalam penggantian dengan sed -n '1p ; $p' one.txt two.txt three.txt97 Perintah sed -n '1p ; $p' one.txt two.txt three.txt_67 dapat diikuti oleh nol atau lebih dari flag berikut sed -n '1p ; $p' one.txt two.txt three.txt_44 Apply the replacement to all matches to the regexp, not just the first sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt28 Hanya ganti kecocokan nomor dari regexp interaction in sed -n '1p ; $p' one.txt two.txt three.txt67 command Note. standar POSIX tidak menentukan apa yang harus terjadi ketika Anda mencampur sed -n '1p ; $p' one.txt two.txt three.txt44 dan pengubah angka, dan saat ini tidak ada kesepakatan yang luas tentang makna di seluruh implementasi sed -i 's/hello/world/' file.txt22. Untuk GNU sed -i 's/hello/world/' file.txt_22, interaksi didefinisikan sebagai. abaikan kecocokan sebelum angka, lalu cocokkan dan ganti semua kecocokan dari angka ke atas sed -i 's/hello/world/' file.txt_37 Jika substitusi telah dilakukan, maka cetak ruang pola baru Catatan. ketika opsi sed -i 's/hello/world/' file.txt37 dan sed -n '1p ; $p' one.txt two.txt three.txt41 ditentukan, urutan relatif keduanya menghasilkan hasil yang sangat berbeda. Secara umum, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_36 (evaluasi lalu cetak) adalah yang Anda inginkan, tetapi mengoperasikan sebaliknya dapat berguna untuk debugging. For this reason, the current version of GNU sed -i 's/hello/world/' file.txt22 interprets specially the presence of sed -i 's/hello/world/' file.txt37 options both before and after sed -n '1p ; $p' one.txt two.txt three.txt41, printing the pattern space before and after evaluation, while in general flags for the sed -n '1p ; $p' one.txt two.txt three.txt67 command show their effect just once. Perilaku ini, meskipun didokumentasikan, mungkin berubah di versi mendatang sed -n '1p ; $p' one.txt two.txt three.txt_73 If the substitution was made, then write out the result to the named file. Sebagai ekstensi sed -i 's/hello/world/' file.txt22 GNU, dua nilai khusus nama file didukung. /dev/stderr, yang menulis hasil ke kesalahan standar, dan /dev/stdout, yang menulis ke keluaran standar sed -n '1p ; $p' one.txt two.txt three.txt_41 This command allows one to pipe input from a shell command into pattern space. If a substitution was made, the command that is found in pattern space is executed and pattern space is replaced with its output. A trailing newline is suppressed; results are undefined if the command to be executed contains a NUL character. This is a GNU sed -i 's/hello/world/' file.txt22 extension sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt45 sed -n '1p ; $p' one.txt two.txt three.txt28 The sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt45 modifier to regular-expression matching is a GNU extension which makes sed -i 's/hello/world/' file.txt22 match regexp in a case-insensitive manner sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt49 sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt50 The sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt49 modifier to regular-expression matching is a GNU sed -i 's/hello/world/' file.txt22 extension which directs GNU sed -i 's/hello/world/' file.txt22 to match the regular expression in multi-line mode. The modifier causes sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 and sed -i 's/hello/world/' file.txt87 to match respectively (in addition to the normal behavior) the empty string after a newline, and the empty string before a newline. There are special character sequences ( sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt56 and sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt57) which always match the beginning or the end of the buffer. In addition, the period character does not match a new-line character in multi-line mode 3. 4 Perintah yang Sering DigunakanJika Anda menggunakan sed -i 's/hello/world/' file.txt_22 sama sekali, kemungkinan besar Anda ingin mengetahui perintah ini sed -n '1p ; $p' one.txt two.txt three.txt_78 [Tidak ada alamat yang diizinkan. ] Karakter sed -n '1p ; $p' one.txt two.txt three.txt_78 memulai komentar; Jika Anda khawatir tentang portabilitas, ketahuilah bahwa beberapa implementasi sed -i 's/hello/world/' file.txt22 (yang tidak sesuai dengan POSIX) hanya dapat mendukung satu komentar satu baris, dan hanya jika karakter paling pertama dari skrip adalah sed -n '1p ; $p' one.txt two.txt three.txt78 Peringatan. jika dua karakter pertama dari skrip sed -i 's/hello/world/' file.txt_22 adalah sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt64, maka opsi -n (tanpa cetak otomatis) dipaksakan. Jika Anda ingin memberi komentar di baris pertama skrip Anda dan komentar itu dimulai dengan huruf 'n' dan Anda tidak menginginkan perilaku ini, pastikan untuk menggunakan huruf kapital 'N', atau tempatkan setidaknya satu spasi sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt65 Keluar sed -i 's/hello/world/' file.txt_22 tanpa memproses perintah atau masukan lagi Contoh. berhenti setelah mencetak baris kedua Perintah ini hanya menerima satu alamat. Perhatikan bahwa ruang pola saat ini dicetak jika cetak otomatis tidak dinonaktifkan dengan opsi -n. Kemampuan untuk mengembalikan kode keluar dari skrip sed -i 's/hello/world/' file.txt_22 adalah ekstensi GNU sed -i 's/hello/world/' file.txt22 Lihat juga GNU sed -i 's/hello/world/' file.txt22 ekstensi sed -n '1p ; $p' one.txt two.txt three.txt01 perintah yang berhenti diam-diam tanpa mencetak ruang pola saat ini sed -i 's/hello/world/' file.txt_36 Hapus ruang pola; Contoh. hapus baris input kedua sed -i 's/hello/world/' file.txt_37 Cetak ruang pola (ke keluaran standar). Perintah ini biasanya hanya digunakan bersamaan dengan opsi baris perintah -n Contoh. cetak hanya baris input kedua sed -n '1p ; $p' one.txt two.txt three.txt_52 Jika cetak otomatis tidak dinonaktifkan, cetak ruang pola, lalu ganti ruang pola dengan baris input berikutnya. Jika tidak ada input lagi maka sed -i 's/hello/world/' file.txt_22 keluar tanpa memproses perintah lagi Perintah ini berguna untuk melewati baris (mis. g. memproses setiap baris ke-N) Contoh. melakukan substitusi pada setiap baris ke-3 (i. e. dua sed -n '1p ; $p' one.txt two.txt three.txt_52 perintah lewati dua baris) sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_2 GNU sed -i 's/hello/world/' file.txt_22 menyediakan sintaks alamat ekstensi first~step untuk mencapai hasil yang sama sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_3 sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt77 Sekelompok perintah dapat diapit antara sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt78 dan sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt79 karakter. Ini sangat berguna ketika Anda ingin sekelompok perintah dipicu oleh satu alamat (atau rentang alamat) yang cocok Contoh. lakukan substitusi lalu cetak baris input kedua sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_4 3. 5 Perintah yang Jarang DigunakanMeskipun mungkin lebih jarang digunakan daripada yang ada di bagian sebelumnya, beberapa skrip sed -i 's/hello/world/' file.txt22 yang sangat kecil namun berguna dapat dibuat dengan perintah ini sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt81 Transliterasi karakter apa pun dalam ruang pola yang cocok dengan salah satu karakter sumber dengan karakter yang sesuai dalam karakter tujuan Contoh. transliterasikan 'a-j' menjadi '0-9' sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_5 (Karakter sed -n '1p ; $p' one.txt two.txt three.txt_94 dapat diganti secara seragam oleh karakter tunggal lainnya dalam perintah sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt83 yang diberikan. ) Instance dari sed -n '1p ; $p' one.txt two.txt three.txt_94 (atau karakter lain apa pun yang digunakan sebagai gantinya), sed -n '1p ; $p' one.txt two.txt three.txt97, atau baris baru dapat muncul di daftar source-chars atau dest-chars, asalkan setiap instance diloloskan oleh sed -n '1p ; $p' one.txt two.txt three.txt97. Daftar source-chars dan dest-chars harus berisi jumlah karakter yang sama (setelah dihapus) Lihat perintah sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_87 dari GNU coreutils untuk fungsi serupa sed -n '1p ; $p' one.txt two.txt three.txt_33 Menambahkan teks setelah baris. Ini adalah ekstensi GNU untuk perintah sed -n '1p ; $p' one.txt two.txt three.txt26 standar - lihat di bawah untuk detailnya Contoh. Tambahkan kata 'halo' setelah baris kedua sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_6 Memimpin spasi setelah perintah sed -n '1p ; $p' one.txt two.txt three.txt_26 diabaikan. Teks yang akan ditambahkan dibaca sampai akhir baris sed -n '1p ; $p' one.txt two.txt three.txt_31 sed -n '1p ; $p' one.txt two.txt three.txt32 Menambahkan teks setelah baris Contoh. Tambahkan 'halo' setelah baris kedua (-. menunjukkan garis keluaran yang dicetak) sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_7 Perintah sed -n '1p ; $p' one.txt two.txt three.txt_26 mengantri baris teks yang mengikuti perintah ini (masing-masing kecuali yang terakhir diakhiri dengan sed -n '1p ; $p' one.txt two.txt three.txt97, yang dihapus dari keluaran) untuk menjadi keluaran pada akhir siklus saat ini, atau saat baris masukan berikutnya dibaca Sebagai ekstensi GNU, perintah ini menerima dua alamat Urutan melarikan diri dalam teks diproses, jadi Anda harus menggunakan sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt95 dalam teks untuk mencetak satu garis miring terbalik Perintah dilanjutkan setelah baris terakhir tanpa garis miring terbalik ( sed -n '1p ; $p' one.txt two.txt three.txt97) - 'dunia' dalam contoh berikut sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_8 Sebagai ekstensi GNU, perintah dan teks sed -n '1p ; $p' one.txt two.txt three.txt_26 dapat dipisahkan menjadi dua parameter sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt98, memungkinkan pembuatan skrip yang lebih mudah sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt_9 sed -n '1p ; $p' one.txt two.txt three.txt_50 menyisipkan teks sebelum baris. Ini adalah ekstensi GNU untuk perintah sed -n '1p ; $p' one.txt two.txt three.txt28 standar - lihat di bawah untuk detailnya Contoh. Masukkan kata 'halo' sebelum baris kedua sed -i 's/hello/world/' file.txt0 Memimpin spasi putih setelah perintah sed -n '1p ; $p' one.txt two.txt three.txt_28 diabaikan. The text to add is read until the end of the line sed -n '1p ; $p' one.txt two.txt three.txt_48 sed -n '1p ; $p' one.txt two.txt three.txt32 Segera tampilkan baris teks yang mengikuti perintah ini Contoh. Masukkan 'halo' sebelum baris kedua (-. menunjukkan garis keluaran yang dicetak) sed -i 's/hello/world/' file.txt_1 Sebagai ekstensi GNU, perintah ini menerima dua alamat Urutan melarikan diri dalam teks diproses, jadi Anda harus menggunakan sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt95 dalam teks untuk mencetak satu garis miring terbalik Perintah dilanjutkan setelah baris terakhir tanpa garis miring terbalik ( sed -n '1p ; $p' one.txt two.txt three.txt97) - 'dunia' dalam contoh berikut sed -i 's/hello/world/' file.txt_2 Sebagai ekstensi GNU, perintah dan teks sed -n '1p ; $p' one.txt two.txt three.txt_28 dapat dipisahkan menjadi dua parameter sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt98, memungkinkan pembuatan skrip yang lebih mudah sed -i 's/hello/world/' file.txt_3 sed -n '1p ; $p' one.txt two.txt three.txt_37 Mengganti baris dengan teks. Ini adalah ekstensi GNU untuk perintah sed -n '1p ; $p' one.txt two.txt three.txt27 standar - lihat di bawah untuk detailnya Contoh. Ganti baris ke-2 hingga ke-9 dengan kata 'halo' sed -i 's/hello/world/' file.txt_4 Memimpin spasi putih setelah perintah sed -n '1p ; $p' one.txt two.txt three.txt_27 diabaikan. Teks yang akan ditambahkan dibaca sampai akhir baris sed -n '1p ; $p' one.txt two.txt three.txt_35 sed -n '1p ; $p' one.txt two.txt three.txt32 Hapus baris yang cocok dengan alamat atau rentang alamat, dan tampilkan baris teks yang mengikuti perintah ini Contoh. Ganti baris ke-2 hingga ke-4 dengan kata 'halo' dan 'dunia' (-. menunjukkan garis keluaran yang dicetak) sed -i 's/hello/world/' file.txt5 If no addresses are given, each line is replaced Siklus baru dimulai setelah perintah ini selesai, karena ruang pola akan dihapus. Dalam contoh berikut, sed -n '1p ; $p' one.txt two.txt three.txt_27 memulai siklus baru dan perintah substitusi tidak dijalankan pada teks yang diganti sed -i 's/hello/world/' file.txt_6 Sebagai ekstensi GNU, perintah dan teks sed -n '1p ; $p' one.txt two.txt three.txt_27 dapat dipisahkan menjadi dua parameter sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt98, memungkinkan pembuatan skrip yang lebih mudah sed -i 's/hello/world/' file.txt_7 sed -n '1p ; $p' one.txt two.txt three.txt_80 Cetak nomor baris input saat ini (dengan baris baru di belakang) sed -i 's/hello/world/' file.txt_8 Sebagai ekstensi GNU, perintah ini menerima dua alamat sed OPTIONS.. [SCRIPT] [INPUTFILE...]_17 Cetak ruang pola dalam bentuk yang tidak ambigu. karakter yang tidak dapat dicetak (dan karakter sed -n '1p ; $p' one.txt two.txt three.txt_97) dicetak dalam bentuk escape gaya-C; n menentukan panjang pembungkus garis yang diinginkan; . Jika dihilangkan, default seperti yang ditentukan pada baris perintah akan digunakan. Parameter n adalah ekstensi sed -i 's/hello/world/' file.txt22 GNU sed -n '1p ; $p' one.txt two.txt three.txt_63 Membaca nama file file. Contoh sed -i 's/hello/world/' file.txt_9 Queue the contents of filename to be read and inserted into the output stream at the end of the current cycle, or when the next input line is read. Perhatikan bahwa jika nama file tidak dapat dibaca, itu dianggap sebagai file kosong, tanpa indikasi kesalahan Sebagai ekstensi sed -i 's/hello/world/' file.txt22 GNU, nilai khusus /dev/stdin didukung untuk nama file, yang membaca isi input standar Sebagai ekstensi GNU, perintah ini menerima dua alamat. File tersebut kemudian akan dibaca ulang dan disisipkan pada setiap baris alamat sed -n '1p ; $p' one.txt two.txt three.txt_73 Tulis ruang pola ke nama file. As a GNU sed -i 's/hello/world/' file.txt22 extension, two special values of filename are supported. /dev/stderr, yang menulis hasil ke kesalahan standar, dan /dev/stdout, yang menulis ke keluaran standar File akan dibuat (atau dipotong) sebelum baris masukan pertama dibaca; sed -n '1p ; $p' one.txt two.txt three.txt_39 Jika ruang pola tidak berisi baris baru, mulailah siklus baru yang normal seolah-olah perintah ________0______36 dikeluarkan. Jika tidak, hapus teks dalam ruang pola hingga baris baru pertama, dan mulai ulang siklus dengan ruang pola yang dihasilkan, tanpa membaca baris input baru sed -i 's/hello/world/' file.txt_71 Tambahkan baris baru ke ruang pola, lalu tambahkan baris input berikutnya ke ruang pola. Jika tidak ada input lagi maka sed -i 's/hello/world/' file.txt_22 keluar tanpa memproses perintah lagi Saat -z digunakan, nol byte (karakter ascii 'NUL') ditambahkan di antara baris (bukan baris baru) Secara default sed -i 's/hello/world/' file.txt_22 tidak berhenti jika tidak ada jalur input 'berikutnya'. Ini adalah ekstensi GNU yang dapat dinonaktifkan dengan --posix. Lihat sed -n '1p ; $p' one.txt two.txt three.txt_57 Cetak bagian dari ruang pola hingga baris baru pertama sed -n '1p ; $p' one.txt two.txt three.txt_46 Ganti isi ruang tunggu dengan isi ruang pola sed -n '1p ; $p' one.txt two.txt three.txt_47 Tambahkan baris baru ke konten ruang tunggu, lalu tambahkan konten ruang pola ke konten ruang tunggu sed -n '1p ; $p' one.txt two.txt three.txt_44 Ganti isi ruang pola dengan isi ruang tunggu sed -n '1p ; $p' one.txt two.txt three.txt_45 Tambahkan baris baru ke konten ruang pola, lalu tambahkan konten ruang penahan ke konten ruang pola sed -n '1p ; $p' one.txt two.txt three.txt75 Tukarkan isi ruang penangguhan dan pola 3. 6 Perintah untuk sed -i 's/hello/world/' file.txt _22 guruDalam kebanyakan kasus, penggunaan perintah ini menunjukkan bahwa Anda mungkin lebih baik memprogram sesuatu seperti sed OPTIONS.. [SCRIPT] [INPUTFILE...]41 atau Perl. But occasionally one is committed to sticking with sed -i 's/hello/world/' file.txt22, and these commands can enable one to write quite convoluted scripts sed -n '1p ; $p' one.txt two.txt three.txt_81 [Tidak ada alamat yang diizinkan. ] Tentukan lokasi label untuk perintah cabang. In all other respects, a no-op sed -n '1p ; $p' one.txt two.txt three.txt_34 Cabang tanpa syarat untuk memberi label. Label dapat dihilangkan, dalam hal ini siklus berikutnya dimulai sed -n '1p ; $p' one.txt two.txt three.txt_66 Cabang untuk diberi label hanya jika telah terjadi sed -n '1p ; $p' one.txt two.txt three.txt67substitusi yang berhasil sejak baris input terakhir dibaca atau cabang bersyarat diambil. Label dapat dihilangkan, dalam hal ini siklus berikutnya dimulai 3. 7 Perintah Khusus untuk GNU sed -i 's/hello/world/' file.txt 22Perintah-perintah ini khusus untuk GNU sed -i 's/hello/world/' file.txt22, jadi Anda harus menggunakannya dengan hati-hati dan hanya jika Anda yakin bahwa menghalangi portabilitas tidaklah buruk. Mereka memungkinkan Anda untuk memeriksa ekstensi sed -i 's/hello/world/' file.txt22 GNU atau untuk melakukan tugas yang cukup sering diperlukan, namun tidak didukung oleh sed -i 's/hello/world/' file.txt22 standar sed OPTIONS.. [SCRIPT] [INPUTFILE...]_51 Perintah ini memungkinkan seseorang untuk menyalurkan input dari perintah shell ke ruang pola. Tanpa parameter, perintah sed -n '1p ; $p' one.txt two.txt three.txt_41 mengeksekusi perintah yang ditemukan di ruang pola dan mengganti ruang pola dengan output; Sebaliknya, jika parameter ditentukan, perintah ________19______41 menafsirkannya sebagai perintah dan mengirimkan keluarannya ke aliran keluaran. Perintah dapat dijalankan melintasi beberapa baris, semuanya kecuali yang terakhir diakhiri dengan garis miring terbalik Dalam kedua kasus, hasilnya tidak terdefinisi jika perintah yang akan dieksekusi berisi karakter NUL Perhatikan bahwa, tidak seperti perintah sed OPTIONS.. [SCRIPT] [INPUTFILE...]_54, output dari perintah akan segera dicetak; sed -n '1p ; $p' one.txt two.txt three.txt_43 Cetak nama file dari file input saat ini (dengan baris baru) sed OPTIONS.. [SCRIPT] [INPUTFILE...]57 Perintah ini hanya menerima satu alamat Perintah ini sama dengan sed -n '1p ; $p' one.txt two.txt three.txt_00, tetapi tidak akan mencetak isi ruang pola. Seperti sed -n '1p ; $p' one.txt two.txt three.txt_00, ini memberikan kemampuan untuk mengembalikan kode keluar ke penelepon Perintah ini dapat berguna karena satu-satunya cara alternatif untuk menyelesaikan fungsi yang tampaknya sepele ini adalah dengan menggunakan opsi -n (yang dapat memperumit skrip Anda secara tidak perlu) atau beralih ke cuplikan berikut, yang menghabiskan waktu dengan membaca seluruh file tanpa efek yang terlihat sed -n '1p ; $p' one.txt two.txt three.txt_0 sed -n '1p ; $p' one.txt two.txt three.txt_64 Antrean baris nama file untuk dibaca dan dimasukkan ke dalam aliran output pada akhir siklus saat ini, atau saat baris input berikutnya dibaca. Perhatikan bahwa jika nama file tidak dapat dibaca, atau jika akhirnya tercapai, tidak ada baris yang ditambahkan, tanpa indikasi kesalahan Seperti perintah sed OPTIONS.. [SCRIPT] [INPUTFILE...]_54, nilai khusus /dev/stdin didukung untuk nama file, yang membaca baris dari input standar sed -n '1p ; $p' one.txt two.txt three.txt_68 Cabang untuk diberi label hanya jika tidak ada sed -n '1p ; $p' one.txt two.txt three.txt67pergantian yang berhasil sejak baris input terakhir dibaca atau cabang bersyarat diambil. Label dapat dihilangkan, dalam hal ini siklus berikutnya dimulai sed OPTIONS.. [SCRIPT] [INPUTFILE...]_64 Perintah ini tidak melakukan apa-apa, tetapi membuat sed -i 's/hello/world/' file.txt_22 gagal jika ekstensi GNU sed -i 's/hello/world/' file.txt22 tidak didukung, hanya karena versi sed -i 's/hello/world/' file.txt22 lainnya tidak menerapkannya. Selain itu, Anda dapat menentukan versi sed -i 's/hello/world/' file.txt22 yang dibutuhkan skrip Anda, seperti sed OPTIONS.. [SCRIPT] [INPUTFILE...]69. Standarnya adalah sed OPTIONS.. [SCRIPT] [INPUTFILE...]_70 karena itu adalah versi pertama yang mengimplementasikan perintah ini Perintah ini mengaktifkan semua ekstensi GNU meskipun sed -i 's/hello/world/' file.txt72 diatur di lingkungan sed -n '1p ; $p' one.txt two.txt three.txt_74 Tulis ke nama file yang diberikan bagian dari ruang pola hingga baris baru pertama. Semua yang dikatakan di bawah perintah sed OPTIONS.. [SCRIPT] [INPUTFILE...]_26 tentang penanganan file juga berlaku di sini sed -n '1p ; $p' one.txt two.txt three.txt_77 Perintah ini mengosongkan konten ruang pola. Biasanya sama dengan 's/. *//’, tetapi lebih efisien dan berfungsi dengan adanya urutan multibyte yang tidak valid dalam aliran input. POSIX mengamanatkan bahwa urutan tersebut tidak cocok dengan '. ’, sehingga tidak ada cara portabel untuk menghapus buffer sed -i 's/hello/world/' file.txt22 di tengah skrip di sebagian besar lokal multibyte (termasuk lokal UTF-8) 3. 8 Sintaks beberapa perintahAda beberapa metode untuk menentukan banyak perintah dalam program sed -i 's/hello/world/' file.txt22 Menggunakan baris baru paling alami saat menjalankan skrip sed dari file (menggunakan opsi -f) Pada baris perintah, semua perintah sed -i 's/hello/world/' file.txt_22 dapat dipisahkan oleh baris baru. Alternatifnya, Anda dapat menentukan setiap perintah sebagai argumen untuk opsi -e sed -n '1p ; $p' one.txt two.txt three.txt_1 Titik koma (';') dapat digunakan untuk memisahkan sebagian besar perintah sederhana sed -n '1p ; $p' one.txt two.txt three.txt_2 Perintah ________21______78, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt79, sed -n '1p ; $p' one.txt two.txt three.txt82, sed -n '1p ; $p' one.txt two.txt three.txt83, sed -n '1p ; $p' one.txt two.txt three.txt84, sed OPTIONS.. [SCRIPT] [INPUTFILE...]83 dapat dipisahkan dengan titik koma (ini adalah ekstensi sed -i 's/hello/world/' file.txt22 GNU non-portabel) sed -n '1p ; $p' one.txt two.txt three.txt_3 Labels used in sed -n '1p ; $p' one.txt two.txt three.txt82, sed -n '1p ; $p' one.txt two.txt three.txt83, sed -n '1p ; $p' one.txt two.txt three.txt84, sed OPTIONS.. [SCRIPT] [INPUTFILE...]83 commands are read until a semicolon. Leading and trailing whitespace is ignored. Dalam contoh di bawah labelnya adalah 'x'. Contoh pertama bekerja dengan GNU sed -i 's/hello/world/' file.txt22. Yang kedua adalah padanan portabel. Untuk informasi lebih lanjut tentang percabangan dan label, lihat sed -n '1p ; $p' one.txt two.txt three.txt_4 3. 8. 1 Perintah Membutuhkan baris baruPerintah berikut tidak dapat dipisahkan dengan titik koma dan memerlukan baris baru sed -n '1p ; $p' one.txt two.txt three.txt26, sed -n '1p ; $p' one.txt two.txt three.txt27, sed -n '1p ; $p' one.txt two.txt three.txt28 (tambahkan/ubah/sisipkan) Semua karakter mengikuti sed -n '1p ; $p' one.txt two.txt three.txt26, sed -n '1p ; $p' one.txt two.txt three.txt27, sed -n '1p ; $p' one.txt two.txt three.txt28 perintah diambil sebagai teks untuk menambahkan/mengubah/menyisipkan. Menggunakan titik koma menyebabkan hasil yang tidak diinginkan sed -n '1p ; $p' one.txt two.txt three.txt_5 Pisahkan perintah menggunakan -e atau baris baru sed -n '1p ; $p' one.txt two.txt three.txt_6 Perhatikan bahwa menentukan teks untuk ditambahkan ('Halo') segera setelah sed -n '1p ; $p' one.txt two.txt three.txt26, sed -n '1p ; $p' one.txt two.txt three.txt27, sed -n '1p ; $p' one.txt two.txt three.txt28 itu sendiri merupakan ekstensi sed -i 's/hello/world/' file.txt22 GNU. Alternatif portabel yang sesuai dengan POSIX adalah sed -n '1p ; $p' one.txt two.txt three.txt_7 sed -n '1p ; $p' one.txt two.txt three.txt_78 (komentar) Semua karakter setelah '#' hingga baris baru berikutnya diabaikan sed -n '1p ; $p' one.txt two.txt three.txt_8 sed OPTIONS.. [SCRIPT] [INPUTFILE...]54, sed -i 's/hello/world/' file.txt88, sed OPTIONS.. [SCRIPT] [INPUTFILE...]26, sed -i 's/hello/world/' file.txt33 (membaca dan menulis file) Perintah ________23______54, sed -i 's/hello/world/' file.txt88, sed OPTIONS.. [SCRIPT] [INPUTFILE...]26, sed -i 's/hello/world/' file.txt33 mengurai nama file hingga akhir baris. Jika spasi, komentar, atau titik koma ditemukan, mereka akan dimasukkan ke dalam nama file, yang mengarah ke hasil yang tidak diharapkan sed -n '1p ; $p' one.txt two.txt three.txt_9 Perhatikan bahwa sed -i 's/hello/world/' file.txt_22 diam-diam mengabaikan kesalahan baca/tulis di sed OPTIONS.. [SCRIPT] [INPUTFILE...]54, sed -i 's/hello/world/' file.txt88, sed OPTIONS.. [SCRIPT] [INPUTFILE...]26, sed -i 's/hello/world/' file.txt33 perintah (seperti file yang hilang). Dalam contoh berikut, sed -i 's/hello/world/' file.txt_22 mencoba membaca file bernama 'hello. txt ; . File hilang, dan kesalahan diabaikan secara diam-diam sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt0 sed -n '1p ; $p' one.txt two.txt three.txt_41 (eksekusi perintah) Karakter apa pun yang mengikuti perintah sed -n '1p ; $p' one.txt two.txt three.txt_41 hingga akhir baris akan dikirim ke shell. Jika spasi, komentar, atau titik koma ditemukan, mereka akan disertakan dalam perintah shell, yang mengarah ke hasil yang tidak diharapkan sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt1 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_17 (pengganti dengan sed -n '1p ; $p' one.txt two.txt three.txt41 atau sed OPTIONS.. [SCRIPT] [INPUTFILE...]26 bendera) Dalam perintah substitusi, flag sed OPTIONS.. [SCRIPT] [INPUTFILE...]_26 menulis hasil substitusi ke file, dan flag sed -n '1p ; $p' one.txt two.txt three.txt41 mengeksekusi hasil substitusi sebagai perintah shell. Seperti perintah $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_22, ini harus diakhiri dengan baris baru. Jika spasi, komentar, atau titik koma ditemukan, mereka akan disertakan dalam perintah shell atau nama file, yang mengarah ke hasil yang tidak terduga sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt2 4 Alamat. memilih baris4. 1 Ikhtisar alamatAlamat menentukan pada baris mana perintah ________0______22 akan dieksekusi. Perintah berikut mengganti kata 'halo' dengan 'dunia' hanya pada baris 144 sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt3 Jika tidak ada alamat yang diberikan, perintah dilakukan di semua lini. Perintah berikut menggantikan kata 'halo' dengan 'dunia' di semua baris dalam file input sed 's/hello/world/' input.txt > output.txt_ Alamat dapat berisi ekspresi reguler untuk mencocokkan baris berdasarkan konten, bukan nomor baris. Perintah berikut mengganti kata 'halo' dengan 'dunia' hanya pada baris yang mengandung kata 'apel' sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt5 Rentang alamat ditentukan dengan dua alamat yang dipisahkan oleh koma ( $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 324). Alamat dapat berupa numerik, ekspresi reguler, atau campuran keduanya. Perintah berikut mengganti kata 'halo' dengan 'dunia' hanya pada baris 4 sampai 17 (inklusif) sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt6 Menambahkan $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 325 karakter ke akhir spesifikasi alamat (sebelum huruf perintah) meniadakan rasa kecocokan. Artinya, jika karakter $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_25 mengikuti alamat atau rentang alamat, maka hanya baris yang tidak cocok dengan alamat yang akan dipilih. Perintah berikut mengganti kata 'halo' dengan 'dunia' hanya pada baris yang tidak mengandung kata 'apel' sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt7 Perintah berikut ini mengganti kata ‘hello’ dengan ‘world’ hanya pada baris 1 sampai 3 dan 18 sampai baris terakhir file input (i. e. tidak termasuk baris 4 sampai 17) sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt8 4. 2 Memilih garis dengan angkaAlamat dalam skrip sed -i 's/hello/world/' file.txt_22 dapat berupa salah satu dari bentuk berikut sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt28 Menentukan nomor baris hanya akan cocok dengan baris tersebut di input. (Perhatikan bahwa sed -i 's/hello/world/' file.txt22 menghitung baris secara terus-menerus di semua file input kecuali opsi -i atau -s ditentukan. ) sed -i 's/hello/world/' file.txt_87 Alamat ini cocok dengan baris terakhir dari file input terakhir, atau baris terakhir dari setiap file ketika opsi -i atau -s ditentukan $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_31 Ekstensi GNU ini cocok dengan setiap baris langkah yang dimulai dengan baris pertama. Secara khusus, garis akan dipilih ketika ada non-negatif n sedemikian rupa sehingga nomor baris saat ini sama dengan + pertama (n * langkah). Jadi, seseorang akan menggunakan $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_32 untuk memilih baris bernomor ganjil dan $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 333 untuk baris bernomor genap; Perintah berikut menunjukkan penggunaan alamat langkah sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_9 4. 3 memilih baris dengan pencocokan teksGNU sed -i 's/hello/world/' file.txt_22 mendukung alamat ekspresi reguler berikut. Ekspresi reguler default adalah. Jika opsi -E atau -r digunakan, Ekspresi reguler harus dalam sintaks. Lihat $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_36 Ini akan memilih baris mana pun yang cocok dengan ekspresi reguler regexp. Jika regexp itu sendiri menyertakan sed -n '1p ; $p' one.txt two.txt three.txt_94 karakter, masing-masing harus diloloskan dengan garis miring terbalik ( sed -n '1p ; $p' one.txt two.txt three.txt97) Perintah berikut mencetak baris di /etc/passwd yang diakhiri dengan 'bash' sed OPTIONS.. [SCRIPT] [INPUTFILE...]0 Ekspresi reguler kosong '//' mengulangi pencocokan ekspresi reguler terakhir (sama berlaku jika ekspresi reguler kosong diteruskan ke perintah sed -n '1p ; $p' one.txt two.txt three.txt67). Perhatikan bahwa pengubah ekspresi reguler dievaluasi saat ekspresi reguler dikompilasi, sehingga tidak valid untuk menentukannya bersama dengan ekspresi reguler kosong $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_40 (The $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_41 dapat diganti dengan karakter tunggal lainnya. ) Ini juga cocok dengan regexp ekspresi reguler, tetapi memungkinkan seseorang untuk menggunakan pembatas yang berbeda dari sed -n '1p ; $p' one.txt two.txt three.txt94. Ini sangat berguna jika regexp itu sendiri mengandung banyak garis miring, karena menghindari pelarian yang membosankan dari setiap sed -n '1p ; $p' one.txt two.txt three.txt94. Jika regexp itu sendiri menyertakan karakter pembatas, masing-masing harus diloloskan dengan garis miring terbalik ( sed -n '1p ; $p' one.txt two.txt three.txt97) Perintah berikut ini setara. Mereka mencetak baris yang dimulai dengan '/home/alice/documents/' sed OPTIONS.. [SCRIPT] [INPUTFILE...]_1 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_45 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 346 Pengubah sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_45 untuk pencocokan ekspresi reguler adalah ekstensi GNU yang menyebabkan regexp dicocokkan dengan cara yang tidak sensitif huruf Dalam banyak bahasa pemrograman lainnya, huruf kecil sed -n '1p ; $p' one.txt two.txt three.txt28 digunakan untuk pencocokan ekspresi reguler yang tidak sensitif huruf besar-kecil. Namun, di sed -i 's/hello/world/' file.txt22 sed -n '1p ; $p' one.txt two.txt three.txt28 digunakan untuk perintah insert (lihat ) Observe the difference between the following examples Dalam contoh ini, $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_51 adalah alamatnya. ekspresi reguler dengan pengubah sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt45. sed -i 's/hello/world/' file.txt_36 adalah perintah hapus sed OPTIONS.. [SCRIPT] [INPUTFILE...]_2 Di sini, $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_54 adalah alamatnya. ekspresi reguler. sed -n '1p ; $p' one.txt two.txt three.txt_28 adalah perintah insert. sed -i 's/hello/world/' file.txt_36 adalah nilai yang akan dimasukkan. Baris dengan 'd' kemudian disisipkan di atas baris yang cocok sed OPTIONS.. [SCRIPT] [INPUTFILE...]_3 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_57 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 358 The sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt49 modifier to regular-expression matching is a GNU sed -i 's/hello/world/' file.txt22 extension which directs GNU sed -i 's/hello/world/' file.txt22 to match the regular expression in multi-line mode. The modifier causes sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 and sed -i 's/hello/world/' file.txt87 to match respectively (in addition to the normal behavior) the empty string after a newline, and the empty string before a newline. There are special character sequences ( sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt56 and sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt57) which always match the beginning or the end of the buffer. In addition, the period character does not match a new-line character in multi-line mode Alamat regex beroperasi pada konten ruang pola saat ini. Jika ruang pola diubah (misalnya dengan perintah $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 366) pencocokan ekspresi reguler akan beroperasi pada teks yang diubah Dalam contoh berikut, pencetakan otomatis dinonaktifkan dengan -n. Perintah ________35______67 mengubah baris yang berisi '2' menjadi 'X'. Perintah $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_68 mencocokkan garis dengan angka dan mencetaknya. Karena baris kedua diubah sebelum $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 369 regex, itu tidak akan cocok dan tidak akan dicetak sed OPTIONS.. [SCRIPT] [INPUTFILE...]_4 4. 4 Rentang AlamatRentang alamat dapat ditentukan dengan menentukan dua alamat yang dipisahkan oleh koma ( $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 324). Rentang alamat cocok dengan garis mulai dari tempat alamat pertama cocok, dan berlanjut hingga alamat kedua cocok (inklusif) sed OPTIONS.. [SCRIPT] [INPUTFILE...]_5 Jika alamat kedua adalah regexp, maka pemeriksaan kecocokan akhir akan dimulai dengan baris mengikuti baris yang cocok dengan alamat pertama. rentang akan selalu menjangkau setidaknya dua baris (kecuali tentu saja jika aliran input berakhir) sed OPTIONS.. [SCRIPT] [INPUTFILE...]_6 Jika alamat kedua adalah angka yang kurang dari (atau sama dengan) baris yang cocok dengan alamat pertama, maka hanya satu baris yang cocok sed OPTIONS.. [SCRIPT] [INPUTFILE...]_7 GNU sed -i 's/hello/world/' file.txt_22 juga mendukung beberapa formulir dua alamat khusus; $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_72 Nomor baris $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 373 dapat digunakan dalam spesifikasi alamat seperti $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 372 sehingga sed -i 's/hello/world/' file.txt22 akan mencoba mencocokkan regexp di baris input pertama juga. Dengan kata lain, $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_72 mirip dengan $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 377, kecuali bahwa jika addr2 cocok dengan baris input pertama, formulir $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 372 akan menganggapnya sebagai akhir rentang, sedangkan formulir $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 377 akan cocok dengan awal rentangnya dan karenanya membuat rentang rentang naik Perhatikan bahwa ini adalah satu-satunya tempat di mana alamat ________35______73 masuk akal; Contoh berikut menunjukkan perbedaan antara memulai dengan alamat 1 dan 0 sed OPTIONS.. [SCRIPT] [INPUTFILE...]_8 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_82 Mencocokkan addr1 dan garis N yang mengikuti addr1 sed OPTIONS.. [SCRIPT] [INPUTFILE...]_9 addr1 dapat berupa nomor baris atau ekspresi reguler $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_83 Mencocokkan addr1 dan baris yang mengikuti addr1 hingga baris berikutnya yang nomor baris inputnya adalah kelipatan N. Perintah berikut mencetak mulai dari baris 6, hingga baris berikutnya yang merupakan kelipatan 4 (mis. e. baris 8) $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_0 addr1 dapat berupa nomor baris atau ekspresi reguler 5 Ekspresi Reguler. memilih teks5. 1 Gambaran ekspresi reguler di sed -i 's/hello/world/' file.txt 22Untuk mengetahui cara menggunakan sed -i 's/hello/world/' file.txt_22, orang harus memahami ekspresi reguler (singkatnya regexp). Ekspresi reguler adalah pola yang dicocokkan dengan string subjek dari kiri ke kanan. Sebagian besar karakter biasa saja. mereka berdiri sendiri dalam suatu pola, dan cocok dengan karakter yang sesuai. Ekspresi reguler di sed -i 's/hello/world/' file.txt_22 ditentukan di antara dua garis miring Perintah berikut mencetak baris yang berisi kata 'halo' Contoh di atas setara dengan perintah ________35______87 ini The power of regular expressions comes from the ability to include alternatives and repetitions in the pattern. Ini dikodekan dalam pola dengan menggunakan karakter khusus, yang tidak berdiri sendiri tetapi ditafsirkan dalam beberapa cara khusus Karakter sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt_54 (tanda sisipan) dalam ekspresi reguler cocok dengan awal baris. Karakter $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_89 (titik) cocok dengan karakter tunggal mana pun. Perintah sed -i 's/hello/world/' file.txt_22 berikut cocok dan mencetak baris yang dimulai dengan huruf 'b', diikuti oleh karakter tunggal, diikuti dengan huruf 'd' $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_1 Bagian berikut menjelaskan arti dan penggunaan karakter khusus dalam ekspresi reguler 5. 2 Ekspresi reguler dasar (BRE) dan ekstensi (ERE).Ekspresi reguler dasar dan diperluas adalah dua variasi sintaks dari pola yang ditentukan. Sintaks Ekspresi Reguler Dasar (BRE) adalah default di sed -i 's/hello/world/' file.txt22 (dan serupa di $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 387). Gunakan opsi -E yang ditentukan POSIX (-r, --regexp-extended) untuk mengaktifkan sintaks Extended Regular Expression (ERE) Di GNU sed -i 's/hello/world/' file.txt_22, satu-satunya perbedaan antara ekspresi reguler dasar dan ekstensi adalah perilaku beberapa karakter khusus. '?', '+', tanda kurung, kurung kurawal ('{}'), dan '. ’ Dengan sintaks dasar (BRE), karakter ini tidak memiliki arti khusus kecuali diawali dengan garis miring terbalik ('\'); . karakter ini spesial kecuali jika diawali dengan garis miring terbalik ('\') Desired patternBasic (BRE) SyntaxExtended (ERE) Syntaxliteral '+' (tanda tambah)$ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_2 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_3Satu atau lebih karakter 'a' diikuti oleh 'b' (tanda tambah sebagai karakter meta khusus) $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 34 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_5 5. 3 Tinjauan tentang sintaks ekspresi reguler dasarBerikut adalah deskripsi singkat sintaks ekspresi reguler seperti yang digunakan dalam sed -i 's/hello/world/' file.txt22 $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_95 A single ordinary character matches itself sed -i 's/hello/world/' file.txt_60 Mencocokkan urutan nol atau lebih contoh kecocokan untuk ekspresi reguler sebelumnya, yang harus berupa karakter biasa, karakter khusus yang diawali dengan sed -n '1p ; $p' one.txt two.txt three.txt97, $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 389, grup regexp (lihat di bawah), atau ekspresi tanda kurung. Sebagai ekstensi GNU, regular expression postfix juga dapat diikuti oleh sed -i 's/hello/world/' file.txt60; . POSIX 1003. 1-2001 mengatakan bahwa sed -i 's/hello/world/' file.txt_60 berdiri untuk dirinya sendiri ketika muncul di awal ekspresi reguler atau subekspresi, tetapi banyak implementasi nonGNU tidak mendukung ini dan skrip portabel seharusnya menggunakan # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE03 dalam konteks ini $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 389 Matches any character, including newline sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 Matches the null string at beginning of the pattern space, i. e. what appears after the circumflex must appear at the beginning of the pattern space In most scripts, pattern space is initialized to the content of each line (see ). So, it is a useful simplification to think of # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE07 as matching only lines where ‘#include’ is the first thing on line—if there are spaces before, for example, the match fails. This simplification is valid as long as the original content of pattern space is not modified, for example with an sed -n '1p ; $p' one.txt two.txt three.txt67 command sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 acts as a special character only at the beginning of the regular expression or subexpression (that is, after sed -n '1p ; $p' one.txt two.txt three.txt91 or # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE11). Portable scripts should avoid sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 at the beginning of a subexpression, though, as POSIX allows implementations that treat sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 as an ordinary character in that context sed -i 's/hello/world/' file.txt_87 It is the same as sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54, but refers to end of pattern space. sed -i 's/hello/world/' file.txt87 also acts as a special character only at the end of the regular expression or subexpression (that is, before sed -n '1p ; $p' one.txt two.txt three.txt92 or # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE11), and its use at the end of a subexpression is not portable # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE19 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE20 Matches any single character in list. for example, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE21 matches all vowels. A list may include sequences like # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE22, which matches any character between (inclusive) char1 and char2. See # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE23 As sed -i 's/hello/world/' file.txt60, but matches one or more. It is a GNU extension # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE25 As sed -i 's/hello/world/' file.txt60, but only matches zero or one. It is a GNU extension # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE27 As sed -i 's/hello/world/' file.txt60, but matches exactly i sequences (i is a decimal integer; for portability, keep it between 0 and 255 inclusive) # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE29 Matches between i and j, inclusive, sequences # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE30 Matches more than or equal to i sequences # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE31 Groups the inner regexp as a whole, this is used to
# WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE35 Matches either regexp1 or regexp2. Use parentheses to use complex alternative regular expressions. The matching process tries each alternative in turn, from left to right, and the first one that succeeds is used. It is a GNU extension # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE36 Matches the concatenation of regexp1 and regexp2. Concatenation binds more tightly than # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE11, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54, and sed -i 's/hello/world/' file.txt87, but less tightly than the other regular expression operators # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE40 Matches the digit-th # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE41 parenthesized subexpression in the regular expression. This is called a back reference. Subexpressions are implicitly numbered by counting occurrences of sed -n '1p ; $p' one.txt two.txt three.txt91 left-to-right sed -n '1p ; $p' one.txt two.txt three.txt90 Matches the newline character # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE44 Matches char, where char is one of sed -i 's/hello/world/' file.txt87, sed -i 's/hello/world/' file.txt60, $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 389, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE48, sed -n '1p ; $p' one.txt two.txt three.txt97, or sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54. Note that the only C-like backslash sequences that you can portably assume to be interpreted are sed -n '1p ; $p' one.txt two.txt three.txt90 and sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt95; in particular # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE53 is not portable, and matches a ‘t’ under most implementations of sed -i 's/hello/world/' file.txt22, rather than a tab character Note that the regular expression matcher is greedy, i. e. , matches are attempted from left to right and, if two or more matches are possible starting at the same character, it selects the longest Examples ‘abcdef’Matches ‘abcdef’ ‘a*b’Matches zero or more ‘a’s followed by a single ‘b’. For example, ‘b’ or ‘aaaaab’ ‘a\?b’Matches ‘b’ or ‘ab’ ‘a\+b\+’Matches one or more ‘a’s followed by one or more ‘b’s. ‘ab’ is the shortest possible match, but other examples are ‘aaaab’ or ‘abbbbb’ or ‘aaaaaabbbbbbb’ ‘. *’‘. \+’These two both match all the characters in a string; however, the first matches every string (including the empty string), while the second matches only strings containing at least one character ‘^main. *(. *)’This matches a string starting with ‘main’, followed by an opening and closing parenthesis. The ‘n’, ‘(’ and ‘)’ need not be adjacent ‘^#’This matches a string beginning with ‘#’ ‘\\$’This matches a string ending with a single backslash. The regexp contains two backslashes for escaping ‘\$’Instead, this matches a string consisting of a single dollar sign, because it is escaped ‘[a-zA-Z0-9]’In the C locale, this matches any ASCII letters or digits ‘[^ TAB]\+’(Here TAB stands for a single tab character. ) This matches a string of one or more characters, none of which is a space or a tab. Usually this means a word ‘^\(. *\)\n\1$’This matches a string consisting of two equal substrings separated by a newline ‘. \{9\}A$’This matches nine characters followed by an ‘A’ at the end of a line ‘^. \{15\}A’This matches the start of a string that contains 16 characters, the last of which is an ‘A’ 5. 4 Overview of extended regular expression syntaxThe only difference between basic and extended regular expressions is in the behavior of a few characters. ‘?’, ‘+’, parentheses, braces (‘{}’), and ‘. ’. While basic regular expressions require these to be escaped if you want them to behave as special characters, when using extended regular expressions you must escape them if you want them to match a literal character. ‘. ’ is special here because ‘\. ’ is a GNU extension – standard basic regular expressions do not provide its functionality Examples # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE55 becomes ‘abc\?’ when using extended regular expressions. It matches the literal string ‘abc?’ # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE56 becomes ‘c+’ when using extended regular expressions. It matches one or more ‘c’s # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE57 becomes ‘a{3,}’ when using extended regular expressions. It matches three or more ‘a’s # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE58 becomes ‘(abc){2,3}’ when using extended regular expressions. It matches either ‘abcabc’ or ‘abcabcabc’ # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE59 becomes ‘(abc*)\1’ when using extended regular expressions. Backreferences must still be escaped when using extended regular expressions # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE60 becomes ‘a. b’ when using extended regular expressions. It matches ‘a’ or ‘b’ 5. 5 Character Classes and Bracket ExpressionsA bracket expression is a list of characters enclosed by ‘[’ and ‘]’. It matches any single character in that list; if the first character of the list is the caret ‘^’, then it matches any character not in the list. For example, the following command replaces the words ‘gray’ or ‘grey’ with ‘blue’ Bracket expressions can be used in both and regular expressions (that is, with or without the -E/-r options) Within a bracket expression, a range expression consists of two characters separated by a hyphen. It matches any single character that sorts between the two characters, inclusive. In the default C locale, the sorting sequence is the native character order; for example, ‘[a-d]’ is equivalent to ‘[abcd]’ Finally, certain named classes of characters are predefined within bracket expressions, as follows Kelas bernama ini harus digunakan di dalam tanda kurung itu sendiri. Penggunaan yang benar $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_6 Penggunaan yang salah ditolak oleh versi sed -i 's/hello/world/' file.txt22 yang lebih baru. Versi yang lebih lama menerimanya tetapi memperlakukannya sebagai ekspresi braket tunggal (yang setara dengan '[dgit. ]’, yaitu hanya karakter d/g/i/t/. ) $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 3_7'[. alnum. ]’ Karakter alfanumerik. '[. alpha. ]' dan '[. angka. ]’; in the ‘C’ locale and ASCII character encoding, this is the same as ‘[0-9A-Za-z]’ ‘[. alpha. ]’Alphabetic characters. ‘[. lower. ]’ and ‘[. upper. ]’; in the ‘C’ locale and ASCII character encoding, this is the same as ‘[A-Za-z]’ ‘[. blank. ]’Blank characters. space and tab ‘[. cntrl. ]’Control characters. In ASCII, these characters have octal codes 000 through 037, and 177 (DEL). In other character sets, these are the equivalent characters, if any ‘[. digit. ]’Digits. # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE62‘[. graph. ]’ Graphical characters. ‘[. alnum. ]’ and ‘[. punct. ]’ ‘[. lower. ]’Lower-case letters; in the ‘C’ locale and ASCII character encoding, this is # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE63‘[. print. ]’ Printable characters. ‘[. alnum. ]’, ‘[. punct. ]’, and space ‘[. punct. ]’Punctuation characters; in the ‘C’ locale and ASCII character encoding, this is # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE64‘[. space. ]’ Space characters. in the ‘C’ locale, this is tab, newline, vertical tab, form feed, carriage return, and space ‘[. upper. ]’Upper-case letters. in the ‘C’ locale and ASCII character encoding, this is # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE65‘[. xdigit. ]’ Hexadecimal digits. # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE66 Note that the brackets in these class names are part of the symbolic names, and must be included in addition to the brackets delimiting the bracket expression Most meta-characters lose their special meaning inside bracket expressions ‘]’ends the bracket expression if it’s not the first list item. So, if you want to make the ‘]’ character a list item, you must put it first ‘-’represents the range if it’s not first or last in a list or the ending point of a range ‘^’represents the characters not in the list. If you want to make the ‘^’ character a list item, place it anywhere but first TODO. incorporate this paragraph (copied verbatim from BRE section) The characters sed -i 's/hello/world/' file.txt87, sed -i 's/hello/world/' file.txt60, $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 389, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE48, and sed -n '1p ; $p' one.txt two.txt three.txt97 are normally not special within list. For example, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE72 matches either ‘\’ or ‘*’, because the sed -n '1p ; $p' one.txt two.txt three.txt97 is not special here. However, strings like # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE74, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE75, and # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE76 are special within list and represent collating symbols, equivalence classes, and character classes, respectively, and # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE48 is therefore special within list when it is followed by $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 389, sed -n '1p ; $p' one.txt two.txt three.txt80, or sed OPTIONS.. [SCRIPT] [INPUTFILE...]83. Also, when not in sed -i 's/hello/world/' file.txt72 mode, special escapes like sed -n '1p ; $p' one.txt two.txt three.txt90 and # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE53 are recognized within list. See ‘[. ’ represents the open collating symbol ‘. ]’represents the close collating symbol ‘[=’represents the open equivalence class ‘=]’represents the close equivalence class ‘[. ’represents the open character class symbol, and should be followed by a valid character class name ‘. ]’represents the close character class symbol 5. 6 regular expression extensionsThe following sequences have special meaning inside regular expressions (used in and the sed -n '1p ; $p' one.txt two.txt three.txt67 command) These can be used in both and regular expressions (that is, with or without the -E/-r options) # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE85 Matches any “word” character. A “word” character is any letter or digit or the underscore character $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 38 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE86 Matches any “non-word” character $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 39 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE87 Matches a word boundary; that is it matches if the character to the left is a “word” character and the character to the right is a “non-word” character, or vice-versa # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE0 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE88 Matches everywhere but on a word boundary; that is it matches if the character to the left and the character to the right are either both “word” characters or both “non-word” characters # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE1 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE89 Matches whitespace characters (spaces and tabs). Newlines embedded in the pattern/hold spaces will also match # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE2 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE90 Matches non-whitespace characters # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE3 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE91 Matches the beginning of a word # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE4 # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE92 Matches the end of a word # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE5 sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt56 Matches only at the start of pattern space. This is different from sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt54 in multi-line mode Compare the following two examples # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE6 sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt57 Matches only at the end of pattern space. This is different from sed -i 's/hello/world/' file.txt87 in multi-line mode 5. 7 Back-references and Subexpressionsback-references are regular expression commands which refer to a previous part of the matched regular expression. Back-references are specified with backslash and a single digit (e. g. ‘\1’). Bagian dari ekspresi reguler yang mereka rujuk disebut subekspresi, dan ditandai dengan tanda kurung Referensi balik dan subekspresi digunakan dalam dua kasus. in the regular expression search pattern, and in the replacement part of the sed -n '1p ; $p' one.txt two.txt three.txt67 command (see and ) In a regular expression pattern, back-references are used to match the same content as a previously matched subexpression. Dalam contoh berikut, subekspresi adalah '. ' - karakter tunggal apa pun (dikelilingi oleh tanda kurung menjadikannya subekspresi). Referensi belakang '\1' meminta untuk mencocokkan konten yang sama (karakter yang sama) sebagai sub-ekspresi The command below matches words starting with any character, followed by the letter ‘o’, followed by the same character as the first # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE7 Multiple subexpressions are automatically numbered from left-to-right. This command searches for 6-letter palindromes (the first three letters are 3 subexpressions, followed by 3 back-references in reverse order) # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE_8 Pada perintah sed -n '1p ; $p' one.txt two.txt three.txt_67, referensi balik dapat digunakan di bagian pengganti untuk merujuk kembali ke subekspresi di bagian regexp Contoh berikut menggunakan dua subekspresi dalam ekspresi reguler untuk mencocokkan dua kata yang dipisahkan spasi. Referensi belakang di bagian pengganti mencetak kata-kata dalam urutan yang berbeda # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE9 When used with alternation, if the group does not participate in the match then the back-reference makes the whole match fail. For example, ‘a(. ). b\1’ will not match ‘ba’. When multiple regular expressions are given with -e or from a file (‘-f file’), back-references are local to each expression 5. 8 Escape Sequences - specifying special charactersUntil this chapter, we have only encountered escapes of the form ‘\^’, which tell sed -i 's/hello/world/' file.txt22 not to interpret the circumflex as a special character, but rather to take it literally. For example, ‘\*’ matches a single asterisk rather than zero or more backslashes This chapter introduces another kind of escape—that is, escapes that are applied to a character or sequence of characters that ordinarily are taken literally, and that sed -i 's/hello/world/' file.txt22 replaces with a special character. This provides a way of encoding non-printable characters in patterns in a visible manner. There is no restriction on the appearance of non-printing characters in a sed -i 's/hello/world/' file.txt22 script but when a script is being prepared in the shell or by text editing, it is usually easier to use one of the following escape sequences than the binary character it represents The list of these escapes is $ echo | sed 'Q42' ; echo $? 4202 Produces or matches a BEL character, that is an “alert” (ASCII 7) $ echo | sed 'Q42' ; echo $? 4203 Produces or matches a form feed (ASCII 12) sed -n '1p ; $p' one.txt two.txt three.txt90 Produces or matches a newline (ASCII 10) $ echo | sed 'Q42' ; echo $? 4205 Produces or matches a carriage return (ASCII 13) # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE53 Produces or matches a horizontal tab (ASCII 9) $ echo | sed 'Q42' ; echo $? 4207 Produces or matches a so called “vertical tab” (ASCII 11) $ echo | sed 'Q42' ; echo $? 4208 Produces or matches CONTROL-x, where x is any character. The precise effect of ‘\cx’ is as follows. if x is a lower case letter, it is converted to upper case. Then bit 6 of the character (hex 40) is inverted. Thus ‘\cz’ becomes hex 1A, but ‘\c{’ becomes hex 3B, while ‘\c;’ becomes hex 7B $ echo | sed 'Q42' ; echo $? 4209 Produces or matches a character whose decimal ASCII value is xxx $ echo | sed 'Q42' ; echo $? 4210 Produces or matches a character whose octal ASCII value is xxx $ echo | sed 'Q42' ; echo $? 4211 Produces or matches a character whose hexadecimal ASCII value is xx ‘\b’ (backspace) was omitted because of the conflict with the existing “word boundary” meaning 5. 8. 1 Escaping PrecedenceGNU sed -i 's/hello/world/' file.txt22 processes escape sequences before passing the text onto the regular-expression matching of the $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 366 command and Address matching. Thus the follwing two commands are equivalent (‘0x5e’ is the hexadecimal ASCII value of the character ‘^’) $ echo | sed 'Q42' ; echo $? 420 As are the following (‘0x5b’,‘0x5d’ are the hexadecimal ASCII values of ‘[’,‘]’, respectively) $ echo | sed 'Q42' ; echo $? 421 However it is recommended to avoid such special characters due to unexpected edge-cases. For example, the following are not equivalent $ echo | sed 'Q42' ; echo $? 422 5. 9 Multibyte characters and Locale ConsiderationsGNU sed -i 's/hello/world/' file.txt22 processes valid multibyte characters in multibyte locales (e. g. $ echo | sed 'Q42' ; echo $? 4215). The following example uses the Greek letter Capital Sigma (Σ, Unicode code point $ echo | sed 'Q42' ; echo $? 4216). In a $ echo | sed 'Q42' ; echo $? 4215 locale, sed -i 's/hello/world/' file.txt22 correctly processes the Sigma as one character despite it being 2 octets (bytes) $ echo | sed 'Q42' ; echo $? 423 Untuk memaksa sed -i 's/hello/world/' file.txt_22 memproses oktet secara terpisah, gunakan lokal $ echo | sed 'Q42' ; echo $? 4220 (juga dikenal sebagai lokal $ echo | sed 'Q42' ; echo $? 4221) $ echo | sed 'Q42' ; echo $? 424 5. 9. 1 Invalid multibyte characterssed -i 's/hello/world/' file.txt22’s regular expressions do not match invalid multibyte sequences in a multibyte locale In the following examples, the ascii value $ echo | sed 'Q42' ; echo $? 4223 is an incomplete multibyte character (shown here as �). The regular expression ‘. ’ does not match it $ echo | sed 'Q42' ; echo $? 425 Similarly, the ’catch-all’ regular expression ‘. *’ does not match the entire line $ echo | sed 'Q42' ; echo $? 426 GNU sed -i 's/hello/world/' file.txt22 offers the special sed -n '1p ; $p' one.txt two.txt three.txt77 command to clear the current pattern space regardless of invalid multibyte characters (i. e. it works like $ echo | sed 'Q42' ; echo $? 4226 but also removes invalid multibyte characters) $ echo | sed 'Q42' ; echo $? 427 Alternatively, force the $ echo | sed 'Q42' ; echo $? 4220 locale to process each octet separately (every octet is a valid character in the $ echo | sed 'Q42' ; echo $? 4220 locale) $ echo | sed 'Q42' ; echo $? 428 sed -i 's/hello/world/' file.txt22’s inability to process invalid multibyte characters can be used to detect such invalid sequences in a file. In the following examples, the $ echo | sed 'Q42' ; echo $? 4230 is an invalid multibyte sequence, while $ echo | sed 'Q42' ; echo $? 4231 is a valid multibyte sequence (of the Greek Sigma character) The following sed -i 's/hello/world/' file.txt22 program removes all valid characters using $ echo | sed 'Q42' ; echo $? 4233. Any content left in the pattern space (the invalid characters) are added to the hold space using the sed -n '1p ; $p' one.txt two.txt three.txt47 command. On the last line ( sed -i 's/hello/world/' file.txt87), the hold space is retrieved ( sed -n '1p ; $p' one.txt two.txt three.txt75), newlines are removed ( $ echo | sed 'Q42' ; echo $? 4237), and any remaining octets are printed unambiguously ( sed -i 's/hello/world/' file.txt67). Thus, any invalid multibyte sequences are printed as octal values $ echo | sed 'Q42' ; echo $? 429 With a few more commands, sed -i 's/hello/world/' file.txt22 can print the exact line number corresponding to each invalid characters (line 3). These characters can then be removed by forcing the $ echo | sed 'Q42' ; echo $? 4220 locale and using octal escape sequences sed '30,35d' input.txt > output.txt0 5. 9. 2 Upper/Lower case conversionGNU sed -i 's/hello/world/' file.txt22’s substitute command ( sed -n '1p ; $p' one.txt two.txt three.txt67) supports upper/lower case conversions using sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt05, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt04 codes. These conversions support multibyte characters sed '30,35d' input.txt > output.txt1 See 5. 9. 3 Multibyte regexp character classesIn other locales, the sorting sequence is not specified, and ‘[a-d]’ might be equivalent to ‘[abcd]’ or to ‘[aBbCcDd]’, or it might fail to match any character, or the set of characters that it matches might even be erratic. To obtain the traditional interpretation of bracket expressions, you can use the ‘C’ locale by setting the $ echo | sed 'Q42' ; echo $? 4245 environment variable to the value ‘C’ sed '30,35d' input.txt > output.txt2 Their interpretation depends on the $ echo | sed 'Q42' ; echo $? 4246 locale; for example, ‘[[. alnum. ]]’ means the character class of numbers and letters in the current locale TODO. show example of collation sed '30,35d' input.txt > output.txt3 6 Advanced sed -i 's/hello/world/' file.txt 22. cycles and buffers6. 1 How sed -i 's/hello/world/' file.txt 22 Workssed -i 's/hello/world/' file.txt22 maintains two data buffers. the active pattern space, and the auxiliary hold space. Both are initially empty sed -i 's/hello/world/' file.txt22 operates by performing the following cycle on each line of input. first, sed -i 's/hello/world/' file.txt22 reads one line from the input stream, removes any trailing newline, and places it in the pattern space. Then commands are executed; each command can have an address associated to it. addresses are a kind of condition code, and a command is only executed if the condition is verified before the command is to be executed When the end of the script is reached, unless the -n option is in use, the contents of pattern space are printed out to the output stream, adding back the trailing newline if it was removed. Then the next cycle starts for the next input line Unless special commands (like ‘D’) are used, the pattern space is deleted between two cycles. The hold space, on the other hand, keeps its data between cycles (see commands ‘h’, ‘H’, ‘x’, ‘g’, ‘G’ to move data between both buffers) 6. 2 Hold dan Pattern BufferTODO 6. 3 Multiline techniques - using D,G,H,N,P to process multiple linesMultiple lines can be processed as one buffer using the sed -n '1p ; $p' one.txt two.txt three.txt39, sed -n '1p ; $p' one.txt two.txt three.txt45, sed -n '1p ; $p' one.txt two.txt three.txt47, sed -i 's/hello/world/' file.txt71, sed -n '1p ; $p' one.txt two.txt three.txt57. They are similar to their lowercase counterparts ( sed -i 's/hello/world/' file.txt36, sed -n '1p ; $p' one.txt two.txt three.txt44, sed -n '1p ; $p' one.txt two.txt three.txt46, sed -n '1p ; $p' one.txt two.txt three.txt52, sed -i 's/hello/world/' file.txt37), except that these commands append or subtract data while respecting embedded newlines - allowing adding and removing lines from the pattern and hold spaces They operate as follows sed -n '1p ; $p' one.txt two.txt three.txt_39 deletes line from the pattern space until the first newline, and restarts the cycle sed -n '1p ; $p' one.txt two.txt three.txt_45 appends line from the hold space to the pattern space, with a newline before it sed -n '1p ; $p' one.txt two.txt three.txt_47 menambahkan baris dari ruang pola ke ruang tunggu, dengan baris baru di depannya sed -i 's/hello/world/' file.txt_71 appends line from the input file to the pattern space sed -n '1p ; $p' one.txt two.txt three.txt_57 prints line from the pattern space until the first newline The following example illustrates the operation of sed -i 's/hello/world/' file.txt71 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands sed '30,35d' input.txt > output.txt4
A common technique to process blocks of text such as paragraphs (instead of line-by-line) is using the following construct sed '30,35d' input.txt > output.txt5
The following example demonstrates this technique sed '30,35d' input.txt > output.txt6 For more annotated examples, see and 6. 4 Branching and Flow ControlThe branching commands sed -n '1p ; $p' one.txt two.txt three.txt82, sed -n '1p ; $p' one.txt two.txt three.txt83, and sed -n '1p ; $p' one.txt two.txt three.txt84 enable changing the flow of sed -i 's/hello/world/' file.txt22 programs By default, sed -i 's/hello/world/' file.txt22 reads an input line into the pattern buffer, then continues to processes all commands in order. Commands without addresses affect all lines. Commands with addresses affect only matching lines. See and sed -i 's/hello/world/' file.txt22 does not support a typical $ echo | sed 'Q42' ; echo $? 4285 construct. Instead, some commands can be used as conditionals or to change the default flow control sed -i 's/hello/world/' file.txt_36 delete (clears) the current pattern space, and restart the program cycle without processing the rest of the commands and without printing the pattern space sed -n '1p ; $p' one.txt two.txt three.txt_39 delete the contents of the pattern space up to the first newline, and restart the program cycle without processing the rest of the commands and without printing the pattern space $ echo | sed 'Q42' ; echo $? 4288 $ echo | sed 'Q42' ; echo $? 4289 $ echo | sed 'Q42' ; echo $? 4290 $ echo | sed 'Q42' ; echo $? 4291 Addresses and regular expressions can be used as an $ echo | sed 'Q42' ; echo $? 4285 conditional. If [addr] matches the current pattern space, execute the command(s). For example. The command $ echo | sed 'Q42' ; echo $? 4293 means. if the current pattern matches the regular expression $ echo | sed 'Q42' ; echo $? 4294 (a line starting with a hash), then execute the sed -i 's/hello/world/' file.txt36 command. delete the line without printing it, and restart the program cycle immediately sed -n '1p ; $p' one.txt two.txt three.txt82 branch unconditionally (that is. always jump to a label, skipping or repeating other commands, without restarting a new cycle). Combined with an address, the branch can be conditionally executed on matched lines sed -n '1p ; $p' one.txt two.txt three.txt83 branch conditionally (that is. jump to a label) only if a $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 366 command has succeeded since the last input line was read or another conditional branch was taken sed -n '1p ; $p' one.txt two.txt three.txt84 similar but opposite to the sed -n '1p ; $p' one.txt two.txt three.txt83 command. branch only if there has been no successful substitutions since the last input line was read The following two sed -i 's/hello/world/' file.txt22 programs are equivalent. The first (contrived) example uses the sed -n '1p ; $p' one.txt two.txt three.txt82 command to skip the $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 366 command on lines containing ‘1’. The second example uses an address with negation (‘. ’) to perform substitution only on desired lines. The sed '30,35d' input.txt > output.txt04 command is still executed on all lines sed '30,35d' input.txt > output.txt7 6. 4. 1 Branching and CyclesThe sed -n '1p ; $p' one.txt two.txt three.txt82, sed -n '1p ; $p' one.txt two.txt three.txt83 and sed -n '1p ; $p' one.txt two.txt three.txt84 commands can be followed by a label (typically a single letter). Labels are defined with a colon followed by one or more letters (e. g. ‘. x’). If the label is omitted the branch commands restart the cycle. Note the difference between branching to a label and restarting the cycle. when a cycle is restarted, sed -i 's/hello/world/' file.txt22 first prints the current content of the pattern space, then reads the next input line into the pattern space; Jumping to a label (even if it is at the beginning of the program) does not print the pattern space and does not read the next input line The following program is a no-op. The sed -n '1p ; $p' one.txt two.txt three.txt82 command (the only command in the program) does not have a label, and thus simply restarts the cycle. On each cycle, the pattern space is printed and the next input line is read The following example is an infinite-loop - it doesn’t terminate and doesn’t print anything. The sed -n '1p ; $p' one.txt two.txt three.txt82 command jumps to the ‘x’ label, and a new cycle is never started sed '30,35d' input.txt > output.txt8 Branching is often complemented with the sed -n '1p ; $p' one.txt two.txt three.txt52 or sed -i 's/hello/world/' file.txt71 commands. both commands read the next input line into the pattern space without waiting for the cycle to restart. Before reading the next input line, sed -n '1p ; $p' one.txt two.txt three.txt52 prints the current pattern space then empties it, while sed -i 's/hello/world/' file.txt71 appends a newline and the next input line to the pattern space Consider the following two examples sed '30,35d' input.txt > output.txt9
6. 4. 2 Branching example. joining linesAs a real-world example of using branching, consider the case of quoted-printable files, typically used to encode email messages. In these files long lines are split and marked with a soft line break consisting of a single ‘=’ character at the end of the line sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt01 The following program uses an address match ‘/=$/’ as a conditional. If the current pattern space ends with a ‘=’, it reads the next input line using sed -i 's/hello/world/' file.txt71, replaces all ‘=’ characters which are followed by a newline, and unconditionally branches ( sed -n '1p ; $p' one.txt two.txt three.txt82) to the beginning of the program without restarting a new cycle. If the pattern space does not ends with ‘=’, the default action is performed. the pattern space is printed and a new cycle is started sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt02 Here’s an alternative program with a slightly different approach. On all lines except the last, sed -i 's/hello/world/' file.txt71 appends the line to the pattern space. A substitution command then removes soft line breaks (‘=’ at the end of a line, i. e. followed by a newline) by replacing them with an empty string. if the substitution was successful (meaning the pattern space contained a line which should be joined), The conditional branch command sed -n '1p ; $p' one.txt two.txt three.txt83 jumps to the beginning of the program without completing or restarting the cycle. If the substitution failed (meaning there were no soft line breaks), The sed -n '1p ; $p' one.txt two.txt three.txt83 command will not branch. Then, sed -n '1p ; $p' one.txt two.txt three.txt57 will print the pattern space content until the first newline, and sed -n '1p ; $p' one.txt two.txt three.txt39 will delete the pattern space content until the first new line. (To learn more about sed -i 's/hello/world/' file.txt71, sed -n '1p ; $p' one.txt two.txt three.txt57 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands see ) sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt03 For more line-joining examples see 7 Some Sample ScriptsHere are some sed -i 's/hello/world/' file.txt22 scripts to guide you in the art of mastering sed -i 's/hello/world/' file.txt22 7. 1 Joining linesThis section uses sed -i 's/hello/world/' file.txt71, sed -n '1p ; $p' one.txt two.txt three.txt39 and sed -n '1p ; $p' one.txt two.txt three.txt57 commands to process multiple lines, and the sed -n '1p ; $p' one.txt two.txt three.txt82 and sed -n '1p ; $p' one.txt two.txt three.txt83 commands for branching. See and Join specific lines (e. g. if lines 2 and 3 need to be joined) sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt04 Join backslash-continued lines sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt05 Join lines that start with whitespace (e. g SMTP headers) sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt06 7. 2 Centering LinesThis script centers all lines of a file on a 80 columns width. To change that width, the number in sed '30,35d' input.txt > output.txt39 must be replaced, and the number of added spaces also must be changed Note how the buffer commands are used to separate parts in the regular expressions to be matched—this is a common technique sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt07 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt08 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt09 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt10 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt11 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt12 7. 3 Increment a NumberThis script is one of a few that demonstrate how to do arithmetic in sed -i 's/hello/world/' file.txt22. This is indeed possible, but must be done manually To increment one number you just add 1 to last digit, replacing it by the following digit. There is one exception. when the digit is a nine the previous digits must be also incremented until you don’t have a nine This solution by Bruno Haible is very clever and smart because it uses a single buffer; if you don’t have this limitation, the algorithm used in , is faster. It works by replacing trailing nines with an underscore, then using multiple sed -n '1p ; $p' one.txt two.txt three.txt67 commands to increment the last digit, and then again substituting underscores with zeros sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt13 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt14 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt15 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt16 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt17 7. 4 Rename Files to Lower CaseThis is a pretty strange use of sed -i 's/hello/world/' file.txt22. We transform text, and transform it to be shell commands, then just feed them to shell. Don’t worry, even worse hacks are done when using sed -i 's/hello/world/' file.txt22; I have seen a script converting the output of sed '30,35d' input.txt > output.txt44 into a sed '30,35d' input.txt > output.txt45 program The main body of this is the sed -i 's/hello/world/' file.txt22 script, which remaps the name from lower to upper (or vice-versa) and even checks out if the remapped name is the same as the original name. Note how the script is parameterized using shell variables and proper quoting sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt18 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt19 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt20 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt21 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt22 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt23 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt24 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt25 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt26 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt27 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt28 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt29 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt30 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt31 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt32 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt33 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt34 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt35 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt36 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt37 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt38 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt39 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt40 7. 5 Print sed '30,35d' input.txt > output.txt 47 EnvironmentThis script strips the definition of the shell functions from the output of the sed '30,35d' input.txt > output.txt48 Bourne-shell command sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt41 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt42 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt43 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt44 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt45 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt46 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt47 7. 6 Reverse Characters of LinesThis script can be used to reverse the position of characters in lines. The technique moves two characters at a time, hence it is faster than more intuitive implementations Note the sed '30,35d' input.txt > output.txt49 command before the definition of the label. This is often needed to reset the flag that is tested by the sed -n '1p ; $p' one.txt two.txt three.txt83 command Pembaca yang imajinatif akan menemukan kegunaan dari skrip ini. An example is reversing the output of sed '30,35d' input.txt > output.txt51 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt48 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt49 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt50 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt51 7. 7 Text search across multiple linesThis section uses sed -i 's/hello/world/' file.txt71 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands to search for consecutive words spanning multiple lines. See Contoh-contoh ini berurusan dengan menemukan kemunculan kata yang berlipat ganda dalam sebuah dokumen Finding doubled words in a single line is easy using GNU $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 387 and similarly with GNU sed -i 's/hello/world/' file.txt22 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt52
When the doubled word span two lines the above regular expression will not find them as $ echo 1 | sed '\%1%s21232' 3 $ echo 1 | sed --debug '\%1%s21232' SED PROGRAM: /1/ s/1/3/ INPUT: 'STDIN' line 1 PATTERN: 1 COMMAND: /1/ s/1/3/ PATTERN: 3 END-OF-CYCLE: 387 and sed -i 's/hello/world/' file.txt22 operate line-by-line By using sed -i 's/hello/world/' file.txt71 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands, sed -i 's/hello/world/' file.txt22 can apply regular expressions on multiple lines (that is, multiple lines are stored in the pattern space, and the regular expression works on it) sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt53
See the GNU sed '30,35d' input.txt > output.txt64 manual for an alternative solution using sed '30,35d' input.txt > output.txt65 and sed '30,35d' input.txt > output.txt66 at https. //gnu. org/s/coreutils/manual/html_node/Squeezing-and-deleting. html 7. 8 Line length adjustmentThis section uses sed -i 's/hello/world/' file.txt71 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands to search for consecutive words spanning multiple lines, and the sed -n '1p ; $p' one.txt two.txt three.txt82 command for branching. See and This (somewhat contrived) example deal with formatting and wrapping lines of text of the following input file sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt54 The following sed program wraps lines at 40 characters sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt55 The wrapped output sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt56 7. 9 Reverse Lines of FilesThis one begins a series of totally useless (yet interesting) scripts emulating various Unix commands. This, in particular, is a sed '30,35d' input.txt > output.txt70 workalike Note that on implementations other than GNU sed -i 's/hello/world/' file.txt22 this script might easily overflow internal buffers sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt57 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt58 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt59 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt60 7. 10 Numbering LinesThis script replaces ‘cat -n’; in fact it formats its output exactly like GNU sed '30,35d' input.txt > output.txt72 does Of course this is completely useless and for two reasons. first, because somebody else did it in C, second, because the following Bourne-shell script could be used for the same purpose and would be much faster sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt61 It uses sed -i 's/hello/world/' file.txt22 to print the line number, then groups lines two by two using sed -i 's/hello/world/' file.txt71. Of course, this script does not teach as much as the one presented below The algorithm used for incrementing uses both buffers, so the line is printed as soon as possible and then discarded. The number is split so that changing digits go in a buffer and unchanged ones go in the other; the changed digits are modified in a single step (using a sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt83 command). The line number for the next line is then composed and stored in the hold space, to be used in the next iteration sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt63 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt64 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt65 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt66 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt67 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt68 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt69 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt70 7. 11 Numbering Non-blank LinesEmulating ‘cat -b’ is almost the same as ‘cat -n’—we only have to select which lines are to be numbered and which are not The part that is common to this script and the previous one is not commented to show how important it is to comment sed -i 's/hello/world/' file.txt22 scripts properly sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt72 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt73 7. 12 Counting CharactersThis script shows another way to do arithmetic with sed -i 's/hello/world/' file.txt22. In this case we have to add possibly large numbers, so implementing this by successive increments would not be feasible (and possibly even more complicated to contrive than this script) The approach is to map numbers to letters, kind of an abacus implemented with sed -i 's/hello/world/' file.txt22. ‘a’s are units, ‘b’s are tens and so on. we simply add the number of characters on the current line as units, and then propagate the carry to tens, hundreds, and so on As usual, running totals are kept in hold space On the last line, we convert the abacus form back to decimal. For the sake of variety, this is done with a loop rather than with some 80 sed -n '1p ; $p' one.txt two.txt three.txt67 commands. first we convert units, removing ‘a’s from the number; then we rotate letters so that tens become ‘a’s, and so on until no more letters remain sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt75 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt76 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt77 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt78 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt79 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt80 7. 13 Counting WordsThis script is almost the same as the previous one, once each of the words on the line is converted to a single ‘a’ (in the previous script each letter was changed to an ‘a’) It is interesting that real sed '30,35d' input.txt > output.txt80 programs have optimized loops for ‘wc -c’, so they are much slower at counting words rather than characters. This script’s bottleneck, instead, is arithmetic, and hence the word-counting one is faster (it has to manage smaller numbers) Again, the common parts are not commented to show the importance of commenting sed -i 's/hello/world/' file.txt22 scripts sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt82 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt83 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt84 7. 14 Counting LinesNo strange things are done now, because sed -i 's/hello/world/' file.txt22 gives us ‘wc -l’ functionality for free. Look 7. 15 Printing the First LinesThis script is probably the simplest useful sed -i 's/hello/world/' file.txt22 script. It displays the first 10 lines of input; the number of displayed lines is right before the sed -n '1p ; $p' one.txt two.txt three.txt00 command 7. 16 Printing the Last LinesPrinting the last n lines rather than the first is more complex but indeed possible. n is encoded in the second line, before the bang character This script is similar to the sed '30,35d' input.txt > output.txt70 script in that it keeps the final output in the hold space and prints it at the end sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt86 Mainly, the scripts keeps a window of 10 lines and slides it by adding a line and deleting the oldest (the substitution command on the second line works like a sed -n '1p ; $p' one.txt two.txt three.txt39 command but does not restart the loop) The “sliding window” technique is a very powerful way to write efficient and complex sed -i 's/hello/world/' file.txt22 scripts, because commands like sed -n '1p ; $p' one.txt two.txt three.txt57 would require a lot of work if implemented manually To introduce the technique, which is fully demonstrated in the rest of this chapter and is based on the sed -i 's/hello/world/' file.txt71, sed -n '1p ; $p' one.txt two.txt three.txt57 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands, here is an implementation of sed '30,35d' input.txt > output.txt92 using a simple “sliding window. ” This looks complicated but in fact the working is the same as the last script. after we have kicked in the appropriate number of lines, however, we stop using the hold space to keep inter-line state, and instead use sed -i 's/hello/world/' file.txt71 and sed -n '1p ; $p' one.txt two.txt three.txt39 to slide pattern space by one line sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt07 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt88 Note how the first, second and fourth line are inactive after the first ten lines of input. After that, all the script does is. exiting on the last line of input, appending the next input line to pattern space, and removing the first line 7. 17 Make Duplicate Lines UniqueThis is an example of the art of using the sed -i 's/hello/world/' file.txt71, sed -n '1p ; $p' one.txt two.txt three.txt57 and sed -n '1p ; $p' one.txt two.txt three.txt39 commands, probably the most difficult to master sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt89 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt90 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt91 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt92 As you can see, we maintain a 2-line window using sed -n '1p ; $p' one.txt two.txt three.txt57 and sed -n '1p ; $p' one.txt two.txt three.txt39. This technique is often used in advanced sed -i 's/hello/world/' file.txt22 scripts 7. 18 Print Duplicated Lines of InputThis script prints only duplicated lines, like ‘uniq -d’ sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt94 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt95 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt96 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt97 7. 19 Remove All Duplicated LinesThis script prints only unique lines, like ‘uniq -u’ sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt07 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt99 sed -i 's/hello/world/' file.txt00 sed -i 's/hello/world/' file.txt01 sed -i 's/hello/world/' file.txt02 7. 20 Squeezing Blank LinesAs a final example, here are three scripts, of increasing complexity and speed, that implement the same function as ‘cat -s’, that is squeezing blank lines The first leaves a blank line at the beginning and end if there are some already sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt07 sed -i 's/hello/world/' file.txt04 sed -i 's/hello/world/' file.txt05 This one is a bit more complex and removes all empty lines at the beginning. It does leave a single blank line at end if one was there sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt07 sed -i 's/hello/world/' file.txt07 sed -i 's/hello/world/' file.txt08 This removes leading and trailing blank lines. It is also the fastest. Note that loops are completely done with sed -n '1p ; $p' one.txt two.txt three.txt52 and sed -n '1p ; $p' one.txt two.txt three.txt82, without relying on sed -i 's/hello/world/' file.txt22 to restart the script automatically at the end of a line sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt62 sed -i 's/hello/world/' file.txt10 sed -i 's/hello/world/' file.txt11 sed -i 's/hello/world/' file.txt12 sed -i 's/hello/world/' file.txt13 sed -i 's/hello/world/' file.txt14 8 GNU sed -i 's/hello/world/' file.txt 22’s Limitations and Non-limitationsFor those who want to write portable sed -i 's/hello/world/' file.txt22 scripts, be aware that some implementations have been known to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard specifies that conforming sed -i 's/hello/world/' file.txt22 implementations shall support at least 8192 byte line lengths. GNU sed -i 's/hello/world/' file.txt22 has no built-in limit on line length; as long as it can sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt008 more (virtual) memory, you can feed or construct lines as long as you like However, recursion is used to handle subpatterns and indefinite repetition. This means that the available stack space may limit the size of the buffer that can be processed by certain patterns 9 Other Resources for Learning About sed -i 's/hello/world/' file.txt 22For up to date information about GNU sed -i 's/hello/world/' file.txt22 please visit https. //www. gnu. org/software/sed/ Send general questions and suggestions to sed-devel@gnu. org. Visit the mailing list archives for past discussions at https. //lists. gnu. org/archive/html/sed-devel/ The following resources provide information about sed -i 's/hello/world/' file.txt22 (both GNU sed -i 's/hello/world/' file.txt22 and other variations). Note these not maintained by GNU sed -i 's/hello/world/' file.txt22 developers 10 Reporting BugsEmail bug reports to bug-sed@gnu. org. Selain itu, harap sertakan keluaran 'sed --version' di badan laporan Anda jika memungkinkan Please do not send a bug report like this sed -i 's/hello/world/' file.txt15 If GNU sed -i 's/hello/world/' file.txt22 doesn’t configure your favorite package, take a few extra minutes to identify the specific problem and make a stand-alone test case. Unlike other programs such as C compilers, making such test cases for sed -i 's/hello/world/' file.txt22 is quite simple A stand-alone test case includes all the data necessary to perform the test, and the specific invocation of sed -i 's/hello/world/' file.txt22 that causes the problem. Semakin kecil test case yang berdiri sendiri, semakin baik. A test case should not involve something as far removed from sed -i 's/hello/world/' file.txt22 as “try to configure frobme-1. 3. 4”. Yes, that is in principle enough information to look for the bug, but that is not a very practical prospect Here are a few commonly reported bugs that are not bugs sed -i 's/hello/world/' file.txt71 command on the last line Most versions of sed -i 's/hello/world/' file.txt22 exit without printing anything when the sed -i 's/hello/world/' file.txt71 command is issued on the last line of a file. GNU sed -i 's/hello/world/' file.txt22 prints pattern space before exiting unless of course the sed -i 's/hello/world/' file.txt45 command switch has been specified. This choice is by design Default behavior (gnu extension, non-POSIX conforming) To force POSIX-conforming behavior sed -i 's/hello/world/' file.txt16 For example, the behavior of would depend on whether foo has an even or an odd number of lines. Or, when writing a script to read the next few lines following a pattern match, traditional implementations of sed -i 's/hello/world/' file.txt22 would force you to write something like sed -i 's/hello/world/' file.txt17 instead of just sed -i 's/hello/world/' file.txt18 In any case, the simplest workaround is to use sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt024 in scripts that rely on the traditional behavior, or to set the sed -i 's/hello/world/' file.txt72 variable to a non-empty valueRegex syntax clashes (problems with backslashes) sed -i 's/hello/world/' file.txt22 uses the POSIX basic regular expression syntax. According to the standard, the meaning of some escape sequences is undefined in this syntax; notable in the case of sed -i 's/hello/world/' file.txt22 are # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE11, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE23, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE25, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt56, sed 's/hello/world/' input.txt > output.txt sed -e 's/hello/world/' input.txt > output.txt sed --expression='s/hello/world/' input.txt > output.txt echo 's/hello/world/' > myscript.sed sed -f myscript.sed input.txt > output.txt sed --file=myscript.sed input.txt > output.txt57, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE91, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE92, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE87, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE88, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE85, and # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE86 As in all GNU programs that use POSIX basic regular expressions, sed -i 's/hello/world/' file.txt22 interprets these escape sequences as special characters. So, sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt040 matches one or more occurrences of ‘x’. sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt041 matches either ‘abc’ or ‘def’ This syntax may cause problems when running scripts written for other sed -i 's/hello/world/' file.txt22s. Some sed -i 's/hello/world/' file.txt22 programs have been written with the assumption that # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE11 and # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE23 match the literal characters sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt046 and sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt047. Such scripts must be modified by removing the spurious backslashes if they are to be used with modern implementations of sed -i 's/hello/world/' file.txt22, like GNU sed -i 's/hello/world/' file.txt22 On the other hand, some scripts use s. abc\. def. g to remove occurrences of either sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt050 or sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt051. While this worked until sed -i 's/hello/world/' file.txt22 4. 0. x, newer versions interpret this as removing the string sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt053. This is again undefined behavior according to POSIX, and this interpretation is arguably more robust. older sed -i 's/hello/world/' file.txt22s, for example, required that the regex matcher parsed sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt055 as sed -n '1p ; $p' one.txt two.txt three.txt94 in the common case of escaping a slash, which is again undefined behavior; the new behavior avoids this, and this is good because the regex matcher is only partially under our control In addition, this version of sed -i 's/hello/world/' file.txt22 supports several escape characters (some of which are multi-character) to insert non-printable characters in scripts ( $ echo | sed 'Q42' ; echo $? 4202, sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt059, sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt060, sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt061, $ echo | sed 'Q42' ; echo $? 4205, # WRONG USAGE: 'FILE' will be truncated. sed -ni 's/foo/bar/' FILE53, $ echo | sed 'Q42' ; echo $? 4207, sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt065). These can cause similar problems with scripts written for other sed -i 's/hello/world/' file.txt22s-i clobbers read-only files In short, ‘sed -i’ will let you delete the contents of a read-only file, and in general the -i option (see ) lets you clobber protected files. This is not a bug, but rather a consequence of how the Unix file system works The permissions on a file say what can happen to the data in that file, while the permissions on a directory say what can happen to the list of files in that directory. ‘sed -i’ will not ever open for writing a file that is already on disk. Rather, it will work on a temporary file that is finally renamed to the original name. if you rename or delete files, you’re actually modifying the contents of the directory, so the operation depends on the permissions of the directory, not of the file. For this same reason, sed -i 's/hello/world/' file.txt22 does not let you use -i on a writable file in a read-only directory, and will break hard or symbolic links when -i is used on such a file sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt068 does not work (gives an error) There is no line 0. 0 is a special address that is only used to treat addresses like sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt069 as active when the script starts. if you write sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt070 and the first line includes the word ‘abc’, then that match would be ignored because address ranges must span at least two lines (barring the end of the file); but what you probably wanted is to delete every line up to the first one including ‘abc’, and this is obtained with sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt071 sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt072 is case insensitive You are encountering problems with locales. POSIX mandates that sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt072 uses the current locale’s collation order – in C parlance, that means using sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt074 instead of sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt075. Some locales have a case-insensitive collation order, others don’t Another problem is that sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt072 tries to use collation symbols. This only happens if you are on the GNU system, using GNU libc’s regular expression matcher instead of compiling the one supplied with GNU sed. In a Danish locale, for example, the regular expression sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt077 matches the string ‘aa’, because this is a single collating symbol that comes after ‘a’ and before ‘b’; ‘ll’ behaves similarly in Spanish locales, or ‘ij’ in Dutch locales To work around these problems, which may cause bugs in shell scripts, set the sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt078 and $ echo | sed 'Q42' ; echo $? 4246 environment variables to ‘C’ $ echo | sed 'Q42' ; echo $? 4226 does not clear pattern space Ini terjadi jika aliran input Anda menyertakan urutan multibyte yang tidak valid. POSIX mandates that such sequences are not matched by ‘. ’, so that ‘s/. *//’ will not clear pattern space as you would expect. In fact, there is no way to clear sed’s buffers in the middle of the script in most multibyte locales (including UTF-8 locales). For this reason, GNU sed -i 's/hello/world/' file.txt22 provides a ‘z’ command (for ‘zap’) as an extension To work around these problems, which may cause bugs in shell scripts, set the sed 's/hello/world/' input.txt > output.txt sed 's/hello/world/' < input.txt > output.txt cat input.txt | sed 's/hello/world/' - > output.txt078 and $ echo | sed 'Q42' ; echo $? 4246 environment variables to ‘C’ Appendix A GNU Free Documentation LicenseVersion 1. 3, 3 November 2008 sed -i 's/hello/world/' file.txt19
ADDENDUM. How to use this License for your documentsTo use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page sed -i 's/hello/world/' file.txt20 If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts. ” line with this sed -i 's/hello/world/' file.txt_21 If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software Concept IndexThis is a general index of all issues discussed in this manual, with the exception of the sed -i 's/hello/world/' file.txt22 commands and command-line options How to remove last word of string in PHP?Answer. Use the rtrim() Function
You can simply use the rtrim() function to remove the last character from a string.
How to remove a word from a string PHP?Answer. Use the PHP str_replace() function
You can use the PHP str_replace() function to replace all the occurrences of a word within a string.
How to remove regex from string in PHP?$string = str_replace(' ', '-', $string); // Removes special chars. $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
How to truncate string in PHP?The ftruncate() function in PHP is an inbuilt function which is used to truncate(shorten) an open file to the specified length. The file and the new size of the file are sent as parameters to the ftruncate() function and it returns True on success and False on Failure. |