【linux】--- 高级命令行文本处理工具 sed

6 篇文章 0 订阅

第四、sed命令

sed命令简述

sed是一种在线编辑器,他一次处理一行内容。

处理时,首先会将当前的行存储在临时缓冲区中,此临时缓冲区称为“模式空间”

然后,sed命令会对缓冲区中的内容进行处理。处理完成后,会将缓冲区的内容送达到屏幕。

接着会去处理下一行,直到处理文件的末尾。

文件的内容并没有改变。

sed主要用来自动编辑一个或者多个文件;简化对文件的反复操作,编写转化程序等。

sed 命令定址

sed命令可以通过定制来编辑所编辑的行,该地址用数字构成;

用逗号分隔的两行数表示以这两行为起止的行的范围(包括行数表的两行)

eg:  1,3 表示待编辑的行为1,2,3行 

美元符号($)表示最后一行
 

sed 基本命令

d表示删除

sed  '2'd  sedtest  删除sedtest的第二行内容

sed '1,3d'  sedtest

sed  '4,$d'  sedtest

sed 模式匹配

sed  '/hah/'d sedtest   --删除包含hah 的行

s标志替换

sed 's/hhhhhh/**/'  sedtest   ---将包含hhhhhh 的行中的hhhhhh替换为**

s/   替换

sed    's/hhhhhh/**/g'  sedtest  --- 如果没有/g,则只替换每行的第一个,而有/g(global)后,这一行所有匹配到的都会去替换

sed  's/^first/start/'  sedtest  -- 替换以first开头的行替换为start开始

sed -n 's/^first/start/p'  sedtest  ---(-n)选项一般和p标志一起使用,表示只打印那些发生替换的行

&标志表示追加

sed 's/^first/&start/'  sedtest

sed - n 's/\(lalala\)l/\1@@@\p'  sedtest

--表示打印将lalala后的l替换为@@@的行 ;*: ()需要转义,  \(  ,    /1表示第一个小括号内的内容

sed -n 's/\(lal\)a\(la\)l/\1*a*\2*l*/p' sedtest

-- * \1表示第一个小括号的内容   \2表示第二个小括号的内容

sed 's#777#***#'  sedtest

-- s后面的符号就是分隔符

sed  -n  '/777/,/999/p'  sedtest

--- 打印匹配到777 到999之间的行,包含777和999

 sed -n '5,/^ninth/p' sedtest

-----打印从第五行开始到第一个包含以ninth开始的行之间的所有行。

sed -n '/first/,/sixth/s/$/end/p' sedtest

--匹配first到sixth的行,并且将每行的末尾打印为end

多点编辑:e命令,流式处理

sed -e '1,5'd -e 's/777/***/' sedtest

expression 表达式赋值

sed --expression='s/ha/$$/' --expression='/hhh/d' sedtest

r:命令,为读入命令

sed '/first/r a.txt' sedtest 

--在sedtest文件中匹配到的行的后面追加 a.txt文件的内容,如果匹配多行,则显示在所有行的后面

w命令: 写入文件

sed -n '/first/w a.txt' sedtest 

--- 将sedtest中匹配到first的行写入到a.txt文件中去

a命令:追加命名

sed '/^fir/a\--->this is a example'  sedtest

---  a为在后面追加

sed '/first/i\---.insert in here' sedtest

---> i为在前面插入

sed '3q' sedtest-----打印完第3行后,退出sed。

y命令 : 替换

sed '1,10y/h/H/' sedtest

Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值