Title here
Summary here
流式文本處理器,作者係 Lee E. McMahon。
sed [OPTIONS] 'command' file
OPTIONS
:命令選項。command
:打印、替換、刪除等。file
:處理嘅文件,如果省略,讀取 STDIN。省略 file
為交互模式,輸入一行執行一次。
把第一處出現嘅 a 替換成 b。
echo 'aba' | sed 's/a/b/'
bba
把第 N 處出現嘅 a 替換成 b。
echo 'aba' | sed 's/a/b/2'
abb
echo 'aba' | sed 's/a/b/g'
bbb
可以用 ;
分隔,也可以使用 -e
選項。
echo 'aba' | sed 's/a/b/; s/a/c/'
echo 'aba' | sed -e 's/a/b/' -e 's/a/c/'
bbc
cmd.sed
文件內容如下。
s/a/b/
s/a/c/
echo 'aba' | sed -f cmd.sed
bbc
-n
表示抑制輸出,p
表示只輸出匹配行。
echo '
aa bb
cc dd
' | sed -n 's/aa/bb/p'
bb bb
echo '
aa bb
cc dd
' | sed 's/aa/bb/w out.txt'
cat out.txt
bb bb
可以使用其他符號替換命令分隔符 /
。
echo '/bin/sh' | sed 's#/sh#/bash#'
/bin/bash
匹配第 2 行。
sed '2s/aa/bb/'
匹配 2-4 行。
sed '2,4s/aa/bb/'
匹配 2 到最後一行。
sed '2,$s/aa/bb/'
sed '2{s/cc/aa/; s/dd/bb/}'
sed '2,4{
s/cc/aa/
s/dd/bb/
}'
sed 'd'
sed '1d'
sed '2,4d'
sed '2,$d'
sed '/aa bb/d'
echo "hello" | sed 'i\New Line'
echo "hello" | sed 'a\New Line'
sed '3i\New Line'
sed '/cc/i\New Line'
必須使用 \
。
sed '2i\
New Line 1\
New Line 2
'
sed '2c\
Change Line 1\
Change Line 2
'
sed '/aa/c\
Change Line 1
'
echo 'aabbcc' | sed 'y/ac/ca/'
ccbbaa
sed -n '2,5p'
sed -n '/aa/{p; s/aa/cc/p}'
sed -n '/bb/{=; p}'
創建 foo 同 bar 文件。
echo -e 'aa\nbb' > foo
echo -e '11\n22' > bar
讀取 foo 文件,並插入到 bar 嘅第一行之後。
sed '1r foo' bar
11
aa
bb
22
匹配字符串再插入。
sed '/22/r foo' bar
11
22
aa
bb
匹配字符串插入,使用 d
刪除匹配行。
sed '/22/{
r foo
d
}' bar
11
aa
bb
下面會報語法錯誤。
# 會報錯
sed '/22/{r foo; d}' bar
硬係要一行也唔係唔得。
sed '/22/r foo' bar | sed '/22/d'