什么是sed编辑器?

        sed是一个命令行文本编辑工具,用于对文本进行处理和转换。它可以读取文本文件,对文件的各个行进行修改、删除和替换操作,并将结果输出到标准输出或者文件中。

        sed 被广泛用于Unix和类Unix系统中的脚本和命令行操作中,它是一种非交互式的文本处理工具。sed使用基于正则表达式的模式匹配和替换来实现各种文本操作。它可以实现的功能包括:替换指定文本、插入和删除文本、根据条件进行行选择等。

        sed具有简洁、高效和灵活的特点,可以批量处理大量的文本数据。由于其强大的文本处理能力,sed常被用于Shell脚本、文本转换、日志分析等场景中。

sed命令

语法 sed [选项] [sed内置命令字符] [文件名]

        示例:

                sed -n 'p' 文件路径

        常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)、取行(取出指定行)

选项:

-n取消默认输出格式,只打印处理过的行(通常搭配p使用)
-i 修改保存文件(默认为预览)
-e同时执行多个过滤
-r扩展正则表达式

内置命令字符

a在指定行后添加一条数据或多行数据
d删除匹配的整行内容
i在指定行前添加一条数据或多行数据
p打印当前匹配的数据
c更改匹配行的内容
w筛选的内容保存到文件
r读取文件并追加
s将匹配的内容进行替换(支持正则表达式)

范围

范围解释
空地址全文处理
单地址指定文件某一行
范围地址10,20 十到二十行,10,+5 第10行向下5行,/pattern1/,/pattern2/
/patter/包含//中的内容的行
步长1~2,标识1、3、5、7、9奇数行,2~2两个步长,标识2、4、6、8、10偶数行
 
示例

例1:展示文件中所有数据

sed -n p 文件名

例2:在第二行后添加一条数据

sed -i '2a 数据' 文件名

例3:把文件中的abc修改成张三

结尾如果是g代表全局匹配 结尾是i 代表忽略大小写 二者可同时写

sed s/abc/张三/g 文件名

但目前源文件并没有修改如果想要修改源文件需要在前面加-i

sed -i s/abc/张三/g 文件名

例4:删除所有行

sed -i 'd' 文件名

例5:替换行

c 替换指定行
示例: sed ‘2c abc’aaa

正则表达式

什么是正则表达式?

        正则表达式是一种字符串匹配模式的描述方法,它可以用于搜索、替换和提取文本中符合某种模式的内容。在sed中,正则表达式可以用来描述需要匹配或操作的模式。

正则表达式通常用于以下情况:

  • 在文本中查找特定的模式,并进行相应的替换。例如,将文本文件中的所有"cat"替换为"dog"。
  • 使用正则表达式的特定模式进行匹配,并对匹配的行执行某些操作。例如,删除包含特定字符的行或将匹配的行输出到新文件中。
正则表达式描述
^匹配行的开始
$匹配行的结尾
[]集合
[^]对集合取反
.匹配单个字符
*匹配以前一个字符任意次数
\{n,m\}匹配前一个字符n~m次
\{n\}匹配前后一个字符n次
\{n,\}匹配前一个字符n次以上
\(\)保留
正则示例

例1:匹配以数字开头的行:

sed -n '/^[0-9]/p' file.txt

例2:删除包含特定单词的行

sed '/word/d' file.txt

例3:使用正则表达式替换文件中满足特定模式的文本

sed '2s/lisi/wangyv/' file.txt

例4:取出linux的ip地址

ifconfig | sed -n '2s/^.*inet//gp'  |  sed -n 's/net.*$//gp'

2s :          处理第二行的内容

^.*inet        匹配inet之前所有的内容

g                全局匹配       

p                打印替换结果

net.*$         匹配net到结尾的内容

s/net.*$//gp 把匹配到的内容替换为空

正则拓展

注意:想要使用正则拓展必须加 -r 

正则符号描述
+最少匹配一次
?最多匹配一次
{n,m}匹配n到m次
|或者
()组合为整体
示例

例:为文件中每个大写字母添加括号[]

sed -r 's/([a-z])/[\1]/g' file.txt

如有错误给孩子提醒一下,感谢观看!

Logo

更多推荐