linux命令之sed

sed命令输入行

Sed 简介

sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。 sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

sed 工作过程

sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。 sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些。 sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed 处理完模式空间中的行后(即在该行上执行 sed 命令后),就把改行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。 sed 每处理完输入文件的最后一行后, sed 便结束运行。 sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。如图 1: sed 处理过程。

attachments-2018-11-IxoOoayC5bee70782e430.jpg

sed的常用选项

sed 的常用选项

选项说明
-n使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印
被 sed 特殊处理的行
-e多重编辑,且命令顺序会影响结果
-f指定一个 sed 脚本文件到命令行执行,
-rSed 使用扩展正则
-i直接修改文档读取的内容,不在屏幕上输出


Sed 的正则表达式

 sed 的正则表达式元字符

元字符功 能示 例示例的匹配对象
^行首定位符/^love/匹配所有以 love 开头的行
$行尾定位符/love$/匹配所有以 love 结尾的行
.匹配除换行外的单
个字符
/l..e/匹配包含字符 l、后跟两个任意
字符、再跟字母 的行
*匹配零个或多个前
导字符
/*love/匹配在零个或多个空格紧跟着
模式 love 的行
[]匹配指定字符组内
任一字符
/[Ll]ove/匹配包含 love 和 Love 的行
[^]匹配不在指定字符
组内任一字符
/[^A-KM-Z]ove/匹配包含 ove,但 ove 之前的那
个字符不在 至 或 至 
的行
\(..\)保存已匹配的字符
&保存查找串以便在
替换串中引用
s/love/**&**/符号&代表查找串。字符串 love
将替换前后各加了两个**的引
用,即 love 变成**love**
\<词首定位符/\<love/匹配包含以 love 开头的单词的
\>词尾定位符/love\>/匹配包含以 love 结尾的单词的
x\{m\}连续 个 x/o\{5\}/分别匹配出现连续 个字母 o
至少 个连续的 o、或 5~10 
连续的 的行
x\{m,\}至少 个 x/o\{5,\}/
x\{m,n\}至少 个 x,但不
超过 个 x
/o\{5,10\}/

想学习正则表达式,可观看:perl高级编程


  • 发表于 2018-11-16 15:32
  • 阅读 ( 2567 )
  • 分类:linux

0 条评论

请先 登录 后评论
omicsgene
omicsgene

生物信息

702 篇文章

作家榜 »

  1. omicsgene 702 文章
  2. 安生水 351 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. rzx 78 文章
  7. 红橙子 78 文章
  8. CORNERSTONE 72 文章