前言
Sed学习笔记
对文件操作
- Sed可以对文件的某一行进行增删改查操作
- Sed只是对内存的操作,所以不会直接更改原文件
<command>:对文件的处理
a:下一行追加
i:上一行追加
p:打印
d:删除位置
s:查找并替换
c:行修改
y:字符串修改
<option>:可选选项
-e script:将指定多个<command>同时执行
-f script:将包含指定多个<command>的文件内命令同时执行
-n:抑制自动输出,不进行反馈
-i:编辑文件内容
-i.bak:修改时同时创建.bak备份
-r:使用扩展的正则表达式
!:取反
<flag>:参数
数字:表示新文本替换的模式
g:表示用新文本替换现有文本的全部实例
p:表示打印原始内容
w <file>:将替换的结果写入文件
<num>:需要操作的行号(可选),一行直接写行号,多行写范围(用,连接起止行号)
<str>:一个字符串
<file>:需要操作的文件路径
1
| sed <option> '<num><command><str><flag>' <file>
|
添加
在所有行下一行追加
在所有行上一行追加
在指定行下一行追加
<num>:指定行
<num_start>:指定开始行
<num_end>:指定截止行
1 2
| sed '<num>a<str>' <file> sed '<num_start>,<num_end>a<str>' <file>
|
在指定行上一行追加
1 2
| sed '<num>i<str>' <file> sed '<num_start>,<num_end>i<str>' <file>
|
在匹配位置下一行追加
<s>:要查找的子字符串
1
| sed '/<s>/a<str>' <file>
|
在匹配位置上一行追加
1
| sed '/<s>/i<stt>' <file>
|
删除
删除所有行
删除指定行
1 2
| sed '<num>d' <file> sed '<num_start>,<num_end>d' <file>
|
删除匹配的行
修改
-i "":修改文件后保存到原文件,并不备份
修改指定行
<s_beford>:修改前的字符串所在行
<s_later>:修改后的字符串
1 2 3 4
| sed 's/<s_before>/<s_later>/' <file>
sed '<num>c<str>' <file> sed '<num_start>,<num_end>c<str>' <file>
|
修改匹配到的行
1
| sed '/<s>/c<str>' <file>
|
修改字符串
<str_before>:修改之前的一组字符
<str_later>:修改之后的一组字符,对应修改之前的字符
1
| sed 'y/<str_before>/<str_later>/' <file>
|
打印
打印指定行
1 2
| sed '<num>p' <file> sed '<num_start>,<num_end>p' <file>
|
打印匹配行
输出到文件
<file_out>:定义输出的文件
1
| sed 'pw <file_out>' <file>
|
完成
参考文献
哔哩哔哩——Python社区
菜鸟笔记
CSDN——SimonLiu009