文本处理器sed


Sed是行处理器,每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(Pattern Space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。因此,执行速度也很快。

格式

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

常用选项  

  -n 不输出模式空间内容到屏幕,即不自动打印     -r ,-E 使用扩展正则表达式
   -i 直接修改读取的档案内容,而不是由屏幕输出
  -i.bak 备份文件并原处编辑
  -f FIFE 从指定文件中读取编辑脚本
  -e 多点编辑
  -s 将多个文件视为独立文件

script格式:

地址 命令

地址格式:

  1. 不给地址:                          对全文进行处理
  2. 步进:#~#                           以#开头,跳#个;例如1~2就是奇数行
  3. 单地址:
    1. $                              最后一行;
    2. /pattern/                   被此处模式所能匹配到的每一行
  4. 地址范围:
    1. #,#                        从#行到#行;
    2. #,+#                      从#到+#行,例如3,+4表示3到7行
    3. /patten1/,/pattern2/  
    4. /patterm/,#
    5. #,/pattern/

命令

  • p                打印当前模式空间内容,追加到默认输出之后
  • Ip               忽略大小写输出
  • d                删除模式空间匹配的行,并立即启用下一轮循环 
  • a[\]text       在指定行后面追加文本,支持使用\n实现多行追加
  • i[\]text        在行前面插入文本
  • c[\]text       替换行为单行或多行文本
  • =               为模式空间中的行打印行号
  • !                模式空间中匹配行取反处理
  • q               结束或退出sed
  • w  file        保存模式匹配的行至指定文件
  • r   file        读取指定文件的文本至模式空间中匹配到的行后

查找替换

  • s/pattern/string/    修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s### 替换修饰符:
  • g                           行内全局替换
  • p                           显示替换成功的行
  • w   /PATH/FILE     将替换成功的行保存至文件中
  • I,i                           忽略大小写

 

c

 1 [16:29:36 root@cen2 ~]#sed '/root/c\centos' /etc/passwd |head -10
 2 centos
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 5 adm:x:3:4:adm:/var/adm:/sbin/nologin
 6 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 7 sync:x:5:0:sync:/sbin:/bin/sync
 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 9 halt:x:7:0:halt:/sbin:/sbin/halt
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 centos

i

 1 [16:30:08 root@cen2[ ~]#sed '/root/i\centos' /etc/passwd |head -10
 2 centos
 3 root:x:0:0:boss,quee,1234991,12211:/root:/bin/bash
 4 bin:x:1:1:bin:/bin:/sbin/nologin
 5 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 6 adm:x:3:4:adm:/var/adm:/sbin/nologin
 7 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 8 sync:x:5:0:sync:/sbin:/bin/sync
 9 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
10 halt:x:7:0:halt:/sbin:/sbin/halt
11 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

a

 1 [16:41:25 root@cen2[ ~]#sed '/root/a\centos' /etc/passwd |head -10
 2 root:x:0:0:boss,quee,1234991,12211:/root:/bin/bash
 3 centos
 4 bin:x:1:1:bin:/bin:/sbin/nologin
 5 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 6 adm:x:3:4:adm:/var/adm:/sbin/nologin
 7 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 8 sync:x:5:0:sync:/sbin:/bin/sync
 9 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
10 halt:x:7:0:halt:/sbin:/sbin/halt
11 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

 

上一篇:17.第五章 文本处理三剑客之 grep和正则表达式(三)


下一篇:ByteCTF2021 double sqli