【笔记】Sed学习笔记

前言

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 <filename>:将替换的结果写入文件

<num>:需要操作的行号(可选),一行直接写行号,多行写范围(用,连接起止行号)
<str>:一个字符串
<file>:需要操作的文件路径

1
sed <option> '<num><command><str><flag>' <file>

添加

在所有行下一行追加

1
sed 'a<str>' <file>

在所有行上一行追加

1
sed 'i<str>' <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
sed 'd' <file>

删除指定行

1
2
sed '<num>d' <file>
sed '<num_start>,<num_end>d' <file>

删除匹配的行

1
sed '/<s>/d' <file>

修改

修改指定行

  • 修改指定一些行,改为指定内容的一行

<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 -i '/<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>

打印匹配行

1
sed '/<s>/p' <file>

输出到文件

<file_out>:定义输出的文件

1
sed 'pw <file_out>' <file>

完成

参考文献

哔哩哔哩——Python社区
菜鸟笔记