温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

shell三剑客之sed(一)

发布时间:2020-07-14 15:25:04 来源:网络 阅读:292 作者:chbo_yang 栏目:开发技术


  • 引言

  我们不生产水,我们只是大自然的搬运工。

  我不是在做广告,我只是整理sed的时候突然想起了这句话。因为我接下来几乎就是个搬运工了shell三剑客之sed(一)。没办法,前人总结的实在是太精辟了。思路清晰,一气呵成。我浏览了下,就让我有种感慨,sed也就这么点东西。说大话了,请忽略shell三剑客之sed(一)

  总之一句话,这篇纯手打,你也可以说是抄的,我承认,但是能把他变成自己的怎么都成!要站在别人的肩膀上,才能看的更远。废话不多说,上干货。

  • 参考资料

  1. man sed 或者 sed --help

  2. 《unix shell 范例精解》

  3. http://www.gnu.org/software/sed/

  • sed,a stream editor

 上面是GRU官方文档的标题:sed,一个流编辑器,非交互式的编辑器。

  • sed的工作过程

  文本文件--->sed的模式空间(缓存区)--->显示输出

  sed逐行处理文件(或输入),将当前处理的行放在sed模式空间里,在模式空间里处理完后显示输出,并删除模式空间里的内容。然后将下一行读入模式空间,处理并输出。

  我们发现,sed处理的是读入模式空间里的文件副本,不是原文件。所以使用sed编辑文件不会对原文件修改和破坏。

  • sed的工作模式

正则表达式sed -n '/RE/p' filename
定址地址可以是数字,正则表达式或者二者结合。
  • 正则表达式元字符


通用http://1076546426.blog.51cto.com/9959876/1702784
&保存查找串以便在替换串中引用



  • sed命令与选项

sed命令
命令
功能命令功能
a\在当前行之后追加文本

i\在当前行之前插入文本

rAppend text read from filename.(从文件中读入并追加文本)

c\用新文本替换当前行中的文本
d删除行

h/H

Copy/append pattern space to hold space.

将模式空间的内容复制/追加到暂存缓冲区。



g/GCopy/append hold space to pattern space.

xExchange the contents of the hold and pattern spaces.
l列出非打印字符
n/NRead/append the next line of input into the pattern space.

pPrint the current pattern space.

s###g全局替换,#为间隔符

wWrite the current pattern space to filename.
y
y/source/dest/ 将字符串转换为另一个字符








sed选项
选项
功能
-n
取消默认输出
-e允许多项编辑
-f指定sed脚本文件
-i修改原文件
-ruse extended regular expressions in the script.
  • 实例


命令
功能
sed -n '/word/p' filename将filename中所有包含word的行打印的屏幕上
sed '1,3d' file1 >file2删除file1中1到3行,并将修改结果保存到file2中
sed -n '1,5p' filename只打印1到5行
sed '1,10s#my#your#g' filename将1至10行中的所有的my替换为your
sed '/my/!d' filename删除所有不含my的行
sed '/reports/s/5/8' filename将含有reports行的第一个数字5改为8
sed 's/....//' filename删除每行的前4个字符
sed 's/....$//' filename删除每行的后4个字符
sed -n '/word/w file2' flie1将file1中所有包含word的行写入file2中



















向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI