Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容

Shell脚本,流式编辑器sed,sed科普,使用sed根据行号合正则定位文件中的内容,

stream Editor:流式编辑器
O、特点:
1、非交互式
2、逐行处理
3、可以对文本进行增删改查等。

一、区别于vim,vim是交互式编辑器,sed是非交互式的,
1、vim对文件的编辑,需要vim打开文件,切换模式,输入内容,保存退出,对文件的改动全程需要用户进行信息交换,是交互式的文本编辑工具。
2、sed对文件的编辑,需要输入sed命令,在命令中确认需要编辑的内容合操作,执行命令就可以完成对文件的修改,对文件的改动是非交互式的,用户只要输入命令就可以,比如:

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第1张图片

二、语法:
sed [选项] ‘[定位符]指令’ 文件名
|sed [选项] '[定位符]指令’

例如:
sed -n ‘3p’ /etc/passwd
sed -n ‘1,3p’ /etc/passwd

-n是屏蔽默认打印全部的意思,如果没有-n,就会把文件的全部内容打印一遍,然后指定行数的内容再次打印一遍,
而且是在打印到原文内容到指定行后紧接着再打印指定行一遍。

-p是print打印的意思,前面的数字是行数,逗号代表从某行到某行。

sed常用的命令选项:
-n 屏蔽默认输出
-i 直接修改源文件
-r 支持扩展正则,默认的sed不支持扩展正则

使用-i可以对源文件进行修改,不使用-i,对文件的修改就只在屏幕上。

三、数据定位,
定位的过程是遍历整个文件并打印到屏幕上,可以使用-n避免将内容打印出来,但是每一次sed都会将文件全部遍历一遍,而不是遍历到符合目标的结果时停止,导致有一定的工作是被浪费了的。

1、行号定位,行号是从1开始的,不是从0开始
sed -n ‘3p’ dir
打印第三行

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第2张图片

sed -n ‘1,3p’ dir
打印1到3行

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第3张图片

sed -n ‘1~3p’ dir
第1行开始,间隔三行打印一次,第1行,第4行,第…3n+1行

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第4张图片

sed -n ‘2~4p’ dir
第2行开始,间隔三行打印一次,第4n+2行,~后面的数字称为步长

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第5张图片

sed -n ‘1,+3p’ dir
打印第一行,和后面的3行,一共4行

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第6张图片

2、正则符号定位
注意:
sed和正则符号配合使用时,正则符号需要用//“包起来”
例如:

在这里插入图片描述

1、一般正则符号,sed -n不需要其他参数
sed -n ‘/^1/p’ dir
打印1开头的

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第7张图片

2、扩展正则符号,grep需要加参数-E的那部分符号,对应的sed加-r的参数,即sed -rn
sed -rn ‘/[0-9]{3,}/p’ dir

注意:
sed与正则符号配合使用时,需要用到//,如果这两个/之间还需要用到/,比如语句
sed -n ‘//KaTeX parse error: Undefined control sequence: \, at position 79: …是,中间那个/前面加一个转义符\̲,̲系统就知道中间那个/需要当作字…/p’ dir

Shell脚本,流式编辑器sed,sed科普,sed数据定位,使用sed根据行号合正则定位文件中的内容_第8张图片

你可能感兴趣的:(Shell脚本,linux,shell)