shell-sed

Sed工作原理

sed是一款流编辑工具,用来对文本进行过滤与替换工作,sed通过输入读取的文件内容,但一次仅读取一行内容进行某些指令处理后输出,sed更适合处理大数据文件。
具体请百度,就不一一粘贴了

sed在处理文本文件的时候,会在内存上创建一个模式空间,然后把这个文件的每一行调入模式永健用相应的命令处理,然后sed使用指令对行进行操作,操作完成之后看看sed中有没有-n参数,没有-n,sed会将行输出到stdout,然后在将第二行读入,然后执行指令进行处理,然后看看有没有-n,没有输出到stdout,直到最后。

sed的基本语法:
    sed [选项] “命令” 文件
    sed [选项] -f 脚本文件 文件

文本的操作:

sed是一个“非交互式的”面向字符流的编辑器,awk是一种负责模式匹配的程序设计语言,它的典型示例是将数据转换成格式化的报表。
sed和vim一样是编辑器,sed是非交互式的,通过参数完成不同的操作,vim是交互式的,vim需要通知处理文件的那几行才回去处理,sed默认
会处理文件的所有行,除非你告诉他不处理那几行。
sed最主要的功能就是替换。拿到文件,文件不符合你的要求把内容做替换,文件格式不符合要求,可以匹配格式做替换

sed [选项] '[寻址]s/模式/替换/[标志]'

sed的相关简单操作可以看之前写的一篇文章或者自行百度。不做详细操作

sed使用正则表达式

使用正则表达式匹配模式
元字符
  . 匹配除换行符之外的任意单个字符,awk中可以匹配换行符
  * 匹配任意一个(包括0个)在它前面的字符
  [...] 匹配方括号中的任意一个字符,^为否定匹配,-表示字符的范围
  ^ 作为正则表达式的第一个字符,匹配行的开始,在awk中可以匹配换行符
  $ 作为正则表达式的最后一个字符,匹配行的结尾,在awk中可以匹配换行符
  \{n,m\} 匹配出现的n到m次,\{n\}匹配出现n次,\{n,\} 匹配至少出现n次
  \ 转义字符
扩展元字符(sed要使用扩展元字符需要使用-r)
  + 匹配前面的正则表达式的一次出现或者多次出现
  ? 匹配前面的正则表达式的零次出现或者一次出现
  | 可以匹配前边或者后边的正则表达式
  () 对正则表达式进行分组
  {n,m}匹配出现的n到m次数,{n}匹配出现n次,{n,}匹配至少出现n次

sed需要使用单引号,

 具体用法百度。。

sed指明了及分组引用

标志flags:
  g 全局更改
  n 可以是1-512,表示第n次出现的情况进行替换
  p 打印模式空间的内容
  w file写入到另一个文件file中
  & 用正则表达式匹配的内容进行替换
  \n 回调参数

具体案例百度,时间不够,之后抽空都会加上。

sed高级指令

sed高级指令
sed只有一段内存空间叫模式空间,但有的时候可能要做一些保存。
比如:处理第一行第二行第三行,但有时候希望处理完第二行回到第一行去处理,这种情况下基本的sed是做不到的,此时需要高级操作
高级指令只做了解
    1.比普通命令用的少
    2.所有的命令都可以使用awk去替代
高级指令分三个组:
    1.处理多汗模式空间(N,D,P)
    2.采用保持空间来保存模式空间的内容并使他客用户后续的命令(H,h,G,g,x)
    3.编写使用分支和条件的指令脚本来更改控制流

sed空间转换

我有PDF文档,如果有需要的可以留言,我百度云分享

 

posted @ 2018-09-06 09:43 前方、有光 阅读(...) 评论(...) 编辑 收藏