sed
caution
- sed 一次只能操作一行
command | stand for |
---|---|
: | label |
= | line_number |
a | append_text_to_stdout_after_flush |
b | branch_unconditional |
c | range_change |
d | pattern_delete_top/cycle |
D | pattern_ltrunc(line+nl)_top/cycle |
g | pattern=hold |
G | pattern+=nl+hold |
h | hold=pattern |
H | hold+=nl+pattern |
i | insert_text_to_stdout_now |
l | pattern_list |
n | pattern_flush=nextline_continue |
N | pattern+=nl+nextline |
p | pattern_print |
P | pattern_first_line_print |
q | flush_quit |
r | append_file_to_stdout_after_flush |
s | substitute |
t | branch_on_substitute |
w | append_pattern_to_file_now |
x | swap_pattern_and_hold |
y | transform_chars |
sed '/pattern/d' file
# perl in place replace
# 可以 替换 \r\n - sed 不可以
# -i.bak 可生成备份文件
perl -ipe 's/\n//' file
替换片段
lead='^### BEGIN COMMON'
tail='^### END COMMON'
sed -e "/$lead/,/$tail/{ /$lead/{p; r stub/Makefile
}; /$tail/p; d }" commons/Makefile