Sed - Tips dan teknik

Sed, atau Editor Stream seperti yang diketahui umum, digunakan terutamanya untuk teks parsing dan mengubah mana-mana teks dalam skrip. Ciri Sed ini digunakan dalam skrip Shell untuk menghasilkan kod fleksibel dan dinamik. Mengetahui petua dan tip yang biasa boleh membantu pengguna mengoptimumkan kod mereka. Kita boleh melakukan transformasi tersuai teks seperti menggantikan satu teks dengan yang lain berdasarkan bilangan kejadian, memaparkan garis tertentu dan mengeluarkan ruang atau kosong. Satu juga boleh menggunakan petua dan kiat untuk item lain seperti menyertai beberapa baris atau menggantikan aksara khas dari baris tertentu juga.

= [Sed] Tips dan cara

Pergantian

Pengganti "foo" dengan "bar" pada setiap baris

Hanya kejadian pertama

sed '/ foo / bar /'

Untuk kes ke-3 sahaja

sed '/ foo / bar / 3'

Semua kejadian

sed '/ foo / bar / g'

Sebelum kejadian terakhir

sed '/ \ (. * \) foo \ (. * foo \) / \ 1bar \ 2 /'

Hanya kes terakhir

sed's / \ (. * \) foo / \ 1bar / '

Pengganti "foo" dengan "bar" hanya baris mengandungi "plop"

sed '/ plop / s / foo / bar / g'

Pengganti "foo" dengan "bar" kecuali garisan yang mengandungi "plop"

sed '/ plop /! s / foo / bar / g '

Gantikan "Foo" atau "foo" dengan "bar" pada setiap baris

sed 's / [Ff] oo / bar / g'

Gantikan "biru" atau "putih" atau "merah" dengan "hijau"

sed \ / biru \ | kosong \ | merah / hijau / g '

Paparan

Baris 1 (kepala -1)

sed q

5 baris pertama (kepala -5)

sed'5 q '

sed'1, 5! d '

Baris terakhir (ekor -1)

sed-n '$ p'

sed '$! d "

5 baris terakhir (ekor -5)

sed-e: ae '$ q, N, 6, $ D; ba '

2 baris terakhir (ekor -2)

sed '$! N; $! D '

Hanya baris matcha sebab atau ungkapan biasa

sed-n '/ pattern / p'

sed '/ regexp /! d '

Hanya baris yang tidak sesuai dengan sebab atau ungkapan biasa

sed-n '/ pattern /! p '

sed '/ regexp / d'

Barisan sebelum corak atau ungkapan biasa

sed-n '/ pola / (g; 1! p;) h'

Baris berikut corak atau ungkapan biasa

sed-n '/ regexp / (n, p;)'

Keluarkan

=== Ruang dan tab ==

Mengalih keluar ruang dan tab

Pada awal baris

sed's / ^ [\ t] * / /

sed \ 's / ^ \ s * / /' # Menggunakan parameter "\ s"

Pada akhir baris

sed's / [\ t] * $ // '

Pada permulaan dan akhir baris

sed's / ^ [\ t] * //; s / [\ t] * $ // '

Talian kosong

Mengeluarkan garisan kosong

Semua baris kosong

sed '/ ^ $ / daripada

sed '/./! daripada

Hanya yang ada di bahagian atas

sed '/./, $! daripada

sed-nr '/./, $/(.*)/ s \ 1 / p' # terima kasih Adrien

Hanya pada hujungnya

sed-e: ae '/ ^ \ n * $ / ($ d N; ba'-e') '

Selang masa yang tetap

Hilangkan garisan pada selang masa yang tetap

Semua pasang baris

sed'1 ~ 2d '

Semua baris ganjil

sed'2 ~ 2d '

Setiap baris n dari baris n

sed'3 ~ 2d '# 2 Semua baris dari baris 3

Pelbagai

Sertai garis

Lampirkan garisan 2 oleh 2

sed '$! N s / \ n / / '

Lampirkan 3 baris dengan 3

sed '$! N s / \ n //; $! N s / \ n / /; '

Jika baris berakhir dengan backslash (\), tambah baris berikut dan gantikan akhir baris (\ n) dengan ruang

sed-e: ae '/ \ \ $ / N s / \ \ \ n / /; ta '

Jika baris bermula dengan tanda yang sama (=), tambahkannya ke baris sebelumnya dan gantikan tanda yang sama (=) dengan ruang

sed-e: ae '$! N s / \ n = / /; ta'-e 'P, D'

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama