Kevin_306

05-文本三剑客之SED 20211214

  文本处理三剑客之 sed

1.sed 工作原理:sed 即 Stream EDitor,和 vi 不同,sed是行编辑器

      Sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到 后一行。每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(Pattern Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下 一行,这样不断重复,直到文件末尾。一次处理一行的设计模式使得sed性能很高,sed在读取大文件时 不会出现卡顿的现象。如果使用vi命令打开几十M上百M的文件,明显会出现有卡顿的现象,这是因为 vi命令打开文件是一次性将文件加载到内存,然后再打开;Sed就避免了这种情况,一行一行的处理, 打开速度非常快,执行速度也很快。

2.sed 基本用法

常用选项:

-n             不输出模式空间内容到屏幕,即不自动打印 
-e             多点编辑 
-f  FILE       从指定文件中读取编辑脚本 
-r, -E         使用扩展正则表达式 
-i.bak         备份文件并原处编辑

3.查看sed帮助 sed --help

3.1输入sed一回车,不能执行,直接显示了sed帮助

3.2sed后面的[OPTION]选项可以空着,但是脚本不能不写,后面的文件也可以空着;

格式:

sed [option]... 'script;script;...' inputfile...

输入内容自动打印,有点像cat;

 

 #rocky

#ubuntu

4.以下是命令举例 

举例1:seq 10 |sed ' '

举例2:sed ' ' < /etc/password

4.1打印 seq 10 | sed '3p' (重复打印第三行);3会重复打印

 4.2关闭自动打印加选项-n,只打印第三行

  #seq 10 |10 -n '3p'

#ubuntu

4.3 $取最后一行

[root@rocky8 data]# seq 10 |sed -n '$p'
10

 

举例1:取出ip值

[root@rocky8 data]# ifconfig eth0 | sed -n '2p'

#ubuntu

 举例2:rocky只打印r开头的内容;记得加上-n选项,关闭自动打印

[root@rocky8 data]# sed '/^r/p' /etc/passwd -n

举例3:在ubuntu中只打印s开头的内容;

#sed '/^s/p' /etc/passwd -n 

举例4:在ubuntu中只打印b开头到m的内容; 从b开头,到m结束;再次查询发现有b开头的继续找,找到m结束为止;

sed -n '/^b/,/^m/p' /etc/passwd 

5.打印奇数行和偶数行(1-2p从第一行开始,每两行打印一次;2-2p从第二行开始,每两行打印一次)

6.删除,不打印第三个

7.打印奇数行的两种办法:

  7.1直接打印奇数行

  

   7.2打印删除偶数行,显示的就是奇数行

  

8.多个来对比下结果

  8.1打印1-10,重复第三行,#seq 10 | sed '3p'

  8.2重复打印1-10,多个!除了第三行, #seq 10 | sed '3!p'

  8.3除了第三行,都打印,#seq 10 | sed -n '3!p'

9.追加(append)

  9.1偶数行追加内容#seq 10 | sed  '2~2a magedu'

 9.2指定行后面追加(比如第三行后面追加)

 #seq 10 | sed  '3a magedu'

 9.3此处的a和后面的字符串连不连上不影响输出结果;

 9.4指定行前面追加(比如第三行前面追加)

 #seq 10 | sed  '3i\magedu\nlinux'

 

10.1 指定行替换(比如把第三行内容替换了)

#seq 10 | sed  '3c\magedu\nlinux'

10.2指定行替换

访问此目录 #cat /etc/passwd

先搜索出s开头的,然后/c替换成了haha;-n 是关闭自动打印,/p是打印当前内容;

11.选项w,是保存模式匹配的行至指定文件

 12.1选项r,读取内容是关于另外一个命令执行的结果

12.2也可以指定行读取内容(比如第三行到第六行读取)

 

 13. 选项= 只是打印行号,比如打印出/etc/passwd的第三行到第六行的行号;

 14.1搜索 替代

 

 14.2 加上g 是全部搜索替代

 

 

 

 

 20211214renew~

posted on 2021-04-06 19:26  熊猫小虾  阅读(58)  评论(0编辑  收藏  举报

导航