sed使用
本文最后更新于:2025年11月19日 下午
关键字:用法
sed使用
语法
1 | |
如果没有输入文件,那么从标准输入中读取。
option
| option | 作用 |
|---|---|
| -n | 阻止输入行的自动输出(如需打印得需要p命令) |
| -f | 使用脚本文件而不是命令行输入命令 |
| -e | 说明后面跟命令,命令行输入多个命令时使用。也可以使用大括号来实现 |
| -E | 使用扩展的正则 |
sed默认使用的正则元字符较少(如不支持+?()|),所以建议加-E选项使用扩展的正则。这样和egrep, grep -E,awk正则表达式才相一致。
地址
默认情况下,sed对每一个输入行都会执行command命令,如果只想对特定的行操作,那么需要address参数。
sed可以指定一个或两个地址。
如果只有一个地址,那么命令应用于这个地址匹配的行。
如果有两个地址,那么命令应用于第一个地址行和第二个地址行区间的所有行。
地址可以是一个数字,也可以是一个正则表达式。
如果地址后面跟有感叹号!,那么表示不匹配这些地址的行才应用命令。
以删除命令d举例:
1 | |
命令
| 命令 | 作用 |
|---|---|
| d | 删除 |
| p | 打印 |
| s | 替换 |
| a | 在处理行后面追加新行 |
| i | 在处理行之前插入 |
| c | 以内容替换当前行 |
1 | |
替换(s)
1 | |
模式使用正则表达式,可以用任意字符分割,如果模式里面游/字符,那么使用其他字符分割更清晰,如替换网站协议(使用@分割):s@https://@http://@
flags
| 标志 | 作用 |
|---|---|
| n | 1-512的一个数字,表示对第n次出现进行替换 |
| g | 对模式的所有次出现都做替换,默认第替换第一次出现 |
| p | 打印行,如果sed指定了-n不输出参数,这个参数有用 |
多重命令与地址嵌套
多重命令通过大括号包起来,分号分割。
地址嵌套就是通过大括号在命令前面再加地址即可。
举例如下:
1 | |
sed使用
https://leon0625.github.io/2022/09/03/04910dde347d/