sed

sed [-e <script>][-f <file>] text

script

脚本组成 addr|cmd |仅用于区分字段

addr

地址表示法功能
n正整数行号
$最后一行
/regexp/POSIX正则 斜线分隔 可以用\cregexpc 选项指定[c 为分界符]
begin,end[begin,end]
addr,+n[addr,addr+n]
begin~stepbegin with first with the gap of step
addr!except addr
/pattern/,n行号和模式双匹配
n,/pattern/同上
x,y!不包括 x 到 y 行

cmd

命令功能
s/regexp/replacement/(gi)替换 replacement 可含 & 代表 regexp内容 分隔符为s后一个符号
c修改/替换文本(可以后面直接接字串)
a在当前行后附加文本(可以后面直接接字串)
i在当前行前插入文本(可以后面直接接字串)
d删除当前行
p打印当前行
c替换行
=输出当前行号
y/set1/set2等长字符集替换
q第一个模式匹配后立即退出
w写入文件

args

参数功能
n禁止自动输出(不关会输出全部,搭配 p 使用)
e指出为命令行
f指出为文件
i原地修改

tldr

# Replace the first occurrence of a regular expression in each line of a file, and print the result:
sed 's/{{regular_expression}}/{{replace}}/' {{filename}}

# Replace all occurrences of an extended regular expression in a file, and print the result:
sed -r 's/{{regular_expression}}/{{replace}}/g' {{filename}}

# Replace all occurrences of a string in a file, overwriting the file (i.e. in-place):
sed -i 's/{{find}}/{{replace}}/g' {{filename}}

# Replace only on lines matching the line pattern:
sed '/{{line_pattern}}/s/{{find}}/{{replace}}/' {{filename}}

# Delete lines matching the line pattern:
sed '/{{line_pattern}}/d' {{filename}}

# Print the first 11 lines of a file:
sed 11q {{filename}}

# Apply multiple find-replace expressions to a file:
sed -e 's/{{find}}/{{replace}}/' -e 's/{{find}}/{{replace}}/' {{filename}}

# Replace separator / by any other character not used in the find or replace patterns, e.g. #:
sed 's#{{find}}#{{replace}}#' {{filename}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23