sed编辑器要领知识点

sed的工作流程主要包括读取,执行和显示3个过程

读取:sed从输入流(文件,管道,标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间)

执行:默认情况下,所有的sed命令都在模式空间顺序的执行,除非指定了行的地址,否则sed命令将会在所有行上次执行。

显示:发送修改后的内容到输出流。在发送数据后模式空间将会被清空。在所有文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

在所有内容都被处理完之前,上述过程将重复执行直至所有内容被处理完

命令格式

sed -e “操作符” 文件1 文件2

sed -n -e “操作” 文件1 文件2

sed -f 脚本文件 文件1 文件2

sed -i -e “操作” 文件1 文件2

sed -e 'n{操作1 操作2 ...}' 文件1 文件2

常用选项

-e或--expression= :表示用指定的命令来输入处理输入的文本文件,只有一个操作命令是省略。一般在执行多的操作命令使用

-f或--file :表示用指定的脚本文件来处理输入的文本文件

-h或者--help:显示帮助

-n,--quiet 或silent:禁止sed编辑器输出,但可以与p命令使用一起输出。

-i:直接修改目标文件

常用操作

s:替换 替换指定字符

d:删除 删除选定的行

a:增加 在当前行下面指定一行指定内容

i:插入,在选定行上面插入一行指定内容

c:替换 将选定的行替换指定内容

y:字符转换,转换前后的字符长度必须相同

p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容;如果有非打印字符,则以ascll=:打印行号

打印内容命令

sed -n -e “p” 文件

sed -n -e “=” 文件

sed -n -e “l”文件

sed -n -e '=;p’ 文件

sed -n'

使用地址:sed编辑器有两种寻址方式

1.以数字形式表示行区间

2.用文本模式来过滤出行

sed -n “p” 文件

sed -n “$p” ~

sed -n '1,2p' ~

sed -n '3,$p' ~

sed -n '1;+3p' ~ #打印1之后的连续3行 ,即1到4行

sed ‘5q’ ~ 打印前5行信息后退出 q表示退出

sed -n ‘p;n’ ~ 打印奇数行 n表示移动到下一行

sed -n ‘n;p’ 打印偶数行

sed -n ‘/root/p’ /etc/passwd       #打印出etcpasswd中包含root的行

sed -n ‘s/root/admin/p’ /etc/passwd      #替换etc文件包含root的行并把第一个root替换成admin并打印    /2p 第二个root替换admin     /3p 第3个root字符替换admin

*******************面试题:sed ‘s9\945\9\99\98\939’ text.txt

 解释:s后面的字符相当于分隔符,这段命令的分隔符位9

所有显示数字为 94599 9893

s/OLD/NEW/z 代表对每行第二个匹配到的字符进行替换

                     g:代表对每行所有能匹配到的字符进行替换

                     p:可以结合-n选项只打印替换的行内容

                       w:可将替换行内容保存到指定的文件里


s/^/添加的字符/     这是在行首添加内容
s/$/添加的字符/     这是在行尾添加内容

sed -f 文件
       可以在文件里定义多条操作规则

sed 替换命令的字符串分隔符
就看s后面跟的字符,3个分隔符要保持一致,如果遇到跟分隔符相同的字符则需要使用 \ 来转义

sed -i 可以直接修改文件内容,操作前建议先验证命令和备份目标文件
vim vi 
命令模式
dd  p   剪切 粘贴
yy  p   复制 粘贴

末行模式
:1,3 co 10  复制 粘贴
:1,3 m 10   剪切 粘贴
 
增删改查

删  d
改  s(字符串替换)  c(整行替换)  y(对应字符进行替换,效果类似tr命令)
查  p
增  a(在行后添加内容)  i(在行前插入内容)  r(在行后读入文件的内容)
 
复制粘贴   H(复制到剪切板)     G(粘贴到指定行后)     1,3H;10G
剪切粘贴    1,3{H;d};10G
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值