Dasar
Menjalankan sed
sed 's/old/new/' file.txt # substitute first match per line sed 's/old/new/g' file.txt # substitute all matches per line sed -n '5p' file.txt # print only line 5 sed '3d' file.txt # delete line 3 echo "hello" | sed 's/hello/hi/' # pipe input
Flag Command-Line
-nSembunyikan output otomatis; hanya cetak dengan p
-e 'cmd'Jalankan perintah sed (gabungkan beberapa dengan -e)
-f script.sedBaca perintah dari file
-i[suffix]Edit file langsung (opsional suffix backup)
-E / -rGunakan extended regular expression
Substitusi
Sintaks Substitusi
sed 's/foo/bar/' f # first occurrence per line sed 's/foo/bar/g' f # all occurrences sed 's/foo/bar/3' f # 3rd occurrence only sed 's/foo/bar/gi' f # all, case-insensitive sed 's|/usr/bin|/opt/bin|g' f # alternate delimiter
Flag Substitusi
gGanti semua kemunculan pada baris
N (number)Ganti hanya kemunculan ke-N
pCetak baris jika substitusi berhasil
w fileTulis baris hasil substitusi ke file
i / IPencocokan tanpa memperhatikan huruf besar/kecil (GNU)
Address
Contoh Address
sed '3s/a/b/' f # only on line 3 sed '2,5s/a/b/' f # lines 2 through 5 sed '/^#/d' f # delete lines starting with # sed '/start/,/end/d' f # delete range between patterns sed '1~2d' f # delete odd-numbered lines (GNU)
Jenis Address
NNomor baris N
$Baris terakhir
N,MRentang baris dari N ke M
/regex/Baris yang cocok dengan regex
/regex1/,/regex2/Rentang dari kecocokan pertama ke kedua
N~stepMulai dari N, setiap baris ke-step (GNU)
addr!Negasi — terapkan ke baris yang tidak cocok
Hapus & Cetak
Perintah Hapus & Cetak
sed '5d' f # delete line 5 sed '/^$/d' f # delete blank lines sed -n '10,20p' f # print lines 10–20 sed -n '/error/p' f # print lines matching pattern sed '/debug/!d' f # keep only matching lines
Referensi Perintah
dHapus pattern space, mulai siklus berikutnya
DHapus hingga newline pertama di pattern space
pCetak pattern space
PCetak hingga newline pertama di pattern space
qKeluar setelah mencetak pattern space saat ini
QKeluar tanpa mencetak (GNU)
Insert & Append
Insert, Append, Change
sed '3i\inserted line' f # insert before line 3 sed '3a\appended line' f # append after line 3 sed '3c\replaced line' f # replace line 3 sed '/marker/a\new line' f # append after pattern match
Perintah
i\textSisipkan teks sebelum baris saat ini
a\textTambahkan teks setelah baris saat ini
c\textGanti baris saat ini dengan teks
r fileBaca dan tambahkan isi file
R fileBaca dan tambahkan satu baris dari file (GNU)
w fileTulis pattern space ke file
Hold Space
Perintah Hold Space
hSalin pattern space ke hold space
HTambahkan pattern space ke hold space
gSalin hold space ke pattern space
GTambahkan hold space ke pattern space
xTukar pattern space dan hold space
Contoh Hold Space
sed -n '1!G;h;$p' f # reverse lines (tac) sed '/^$/{ x; s/\n//; x; }' f # collapse hold on blank sed -n 'H;${x;s/\n/ /g;p;}' f # join all lines with space
Beberapa Perintah
Menggabungkan Perintah
sed -e 's/foo/bar/g' -e 's/baz/qux/g' f sed 's/foo/bar/g; s/baz/qux/g' f sed '/header/{ s/old/new/; s/foo/bar/; }' f sed -f commands.sed input.txt
Pengelompokan & Percabangan
{ cmd1; cmd2; }Kelompokkan perintah untuk address yang sama
:labelDefinisikan label cabang
b labelLompat ke label
t labelLompat jika s/// terakhir berhasil
T labelLompat jika s/// terakhir gagal (GNU)
Pengeditan In-place
Contoh In-place
sed -i 's/old/new/g' file.txt # edit in place (GNU) sed -i.bak 's/old/new/g' file.txt # backup as file.txt.bak sed -i '' 's/old/new/g' file.txt # macOS in-place (no backup) sed -i '/^#/d' config.txt # remove comments in place
Catatan Platform
GNU sed -iSuffix opsional; -i saja mengedit tanpa backup
BSD/macOS sed -iMembutuhkan argumen suffix; gunakan -i '' tanpa backup
-i.bakMembuat file backup dengan ekstensi .bak
Multiple filessed -i 's/a/b/g' *.txt mengedit semua file yang cocok
Regex
Regex dalam sed
.Karakter apa pun (satu)
*Nol atau lebih dari ekspresi sebelumnya
\+Satu atau lebih (BRE) — + di ERE
\?Nol atau satu (BRE) — ? di ERE
^Awal baris
$Akhir baris
[abc]Kelas karakter
\( \)Capture group (BRE) — () di ERE
\1, \2Referensi balik ke capture group
&Seluruh string yang cocok (dalam penggantian)
Contoh Regex
sed 's/[0-9]\+/NUM/g' f # replace numbers sed -E 's/(foo)(bar)/\2\1/g' f # swap groups (ERE) sed 's/.*/(&)/' f # wrap line in parens sed 's/[ \t]*$//' f # strip trailing whitespace
Pola Umum
One-Liner
sed -n '1p' f # first line (head -1) sed '$!d' f # last line (tail -1) sed '/^$/d' f # remove blank lines sed 's/^[ \t]*//' f # strip leading whitespace sed '=' f | sed 'N;s/\n/\t/' f # number lines
Resep
Double-spacesed G — tambahkan baris kosong setelah setiap baris
Hapus tag HTMLsed 's/<[^>]*>//g'
Ekstrak emailsed -nE 's/.*([a-z]+@[a-z.]+).*/\1/p'
Tambah komentarsed 's/^/# /' — awali setiap baris dengan #
Hapus baris kosong di akhirsed -e :a -e '/^\n*$/{$d;N;ba' -e '}'
Ganti baris ke-Nsed 'Nc\new text' — ganti baris N