sed 流编辑器
基本命令格式
sed [常用选项] 命令文本 输入
常用选项
-n (--quiet, --silent):安静模式。在 sed 的基本用法中,所有来自标准输出的信息都会被列出到终端上。加上 -n 参数后,则只有被sed 处理的那些行才会被输出。
-e:指定在指令列模式上执行的命令文本。默认不需要指定,只有同时要执行多个命令文本时才需要显式的指定 -e 选项。
-f:同时要执行多个命令文本时,可以将这些命令文本写到一个文件中,然后通过 -f filename 的方式使用。
-r:sed 默认使用基础正则表达式语法(BRE),指定 -r 选项后使用扩展正则表达式语法(ERE)。
-i:直接修改读取的文档,而不是输出到终端。
常用命令
a:新增行, a 的后面接字串,这些字串会被添加到匹配行的下面。
c:替换行, c 的后面接字串,这些字串会替换掉匹配到的行。
d:删除行,删除匹配到的行。
i:插入行, i 的后面接字串,这些字串会被插入到匹配行的上面。
p:打印,将某些行输出。通常 p 会与参数 -n 一起使用,这样只输出匹配到的行。
s:字符串替换,主要搭配正则表达式使用。
- 删除和新增:
'1d'
|
删除第一行
|
'1a Hello!'
|
在第一行下面新增一行,内容为 "Hello!"
|
'$d'
|
删除最后一行
|
'$a Hello!' | 在最后一行下面新增一行,内容为 "Hello!" |
'1,2d'
|
删除第一行到第二行 | '1,3a Hello!' | 在第一行,第二行和第三行下面分别增加一行,内容为 "Hello!" 1,3 表示从第一行到第三行 |
'2,$d'
|
删除第二行到最后一行 | '1a Hello!\nChina!' | 一次增加多行需要使用换行符 \n |
-e '1a xxx' -e '2a yyy'
|
多命令 |
1i Hello world!
2i Hello world!
3i Hello world!
-f commands
|
文件命令 |
- 展示和替换:
$ sed -n '1p' test.txt
|
# 匹配第一行
|
's/Hello/Hi/'
|
把Hello 替换为 Hi |
$ sed -n '$p' test.txt
|
# 匹配最后一行
|
'2,3s/Hello/Hi/g'
|
只在第二行和第三行进行替换操作 |
$ sed -n '2,3p' test.txt
|
# 匹配第二行和第三行
|
's/Hello/Hi/g' | 全局替换,需要在命令文本中指定 g |
$ sed -n '3,$p' test.txt
|
# 匹配第三行和第三行后的每一行
|
's/Hello//g' | 通过替换来删除字符串 |
- 匹配和行替换
-n 选项告诉 sed 只输出那些被处理过的行。
|
p 命令则告诉 sed 只输出那些匹配到的行 | ||
$ sed '/Hello/d' hello.txt
|
# 找到匹配的行,并删除
|
's/^commonName.*/commonName = xxx/g'
|
通过正则表达式进行整行内容的替换 |
$ sed '/Hello/a world!' hello.txt
|
# 找到匹配的行,并在它们下面添加新行
|
's/^subjectAltName.*/subjectAltName = DNS:xxx/g' |
通过正则表达式进行整行内容的替换 |
$ sed 's/world/China/g' hello.txt
|
# 把行中的 world 替换为 China
|
'1c Hello world!'
|
把第一行替换为 "Hello world!" |
$ sed '/Hello/s/world/China/g' hello.txt
|
# 找到匹配的行,在这些行中执行替换
|
'1,3c Hello world!'
|
把第一行到第三行替换为 "Hello world!" |
浙公网安备 33010602011771号