流编辑sed

工作方式

sed是基于的,因此按顺序对每一行执行命令。然后,sed 将其结果写入标准输出(stdout),它不修改任何输入文件。

sed -e '1d' a.sh

上述命令的执行过程:

  1. sed打开a.sh文件
  2. 将1行读入其模式缓冲区
  3. 执行编辑命令 d (删除行)
  4. 打印模式缓冲区
  5. 对后面的每一行重复1--4步骤

基本语法

sed -参数 -动作 文件

参数:

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

动作:

  • a :新增。 a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代。 c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除。因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i :插入。 i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印。亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代。可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

规则

字符 描述
^ 与行首匹配
$ 与行尾匹配
. 与任一个字符匹配
* 与前一个字符的零个或多个出现匹配
[] 与[]之内的所有字符匹配

规则表达式实例

规则表达式 描述
/./ 将与包含至少一个字符的任何行匹配
/../ 将与包含至少两个字符的任何行匹配
/^#/ 将与以‘#’开头的任何行匹配,通常是注释
/^$/ 将与空行匹配
/}$/ 将与以‘}’结束的任何行匹配
/} *$/ 将与‘}’后面跟随零个或多个空格结束的任意行匹配
[abc] 将与包含任何小写字母'a'或'b'或'c'的任意行匹配
^[abc] 将与以字母'a'或'b'或'c'开始的任意行匹配

应用

  Qufangdemac:test qfcomputer$ cat a.sh
  #this is a beautiful kit
  #hello world kitty hhhh
  hello fuzi hello shenmu
  hello inner hello xian
  hello good morning hello hello china
  • 忽略注释
Qufangdemac:test qfcomputer$ sed -e '/^#/d' a.sh
hello fuzi hello shenmu
hello inner hello xian
hello good morning hello hello china
  • 打印指定行
Qufangdemac:test qfcomputer$ sed -n '1,3p' a.sh
#this is a beautiful kit
#hello world kitty hhhh
hello fuzi hello shenmu
  • 打印注释的行
Qufangdemac:test qfcomputer$ sed -n '/^#/p' a.sh
#this is a beautiful kit
#hello world kitty hhhh
  • 全文替换
Qufangdemac:test qfcomputer$ sed -e 's/hello/hi/g' a.sh
#this is a beautiful kit
#hi world kitty hhhh
hi fuzi hi shenmu
hi inner hi xian
hi good morning hi hi china
  • 指定地址范围+替换
Qufangdemac:test qfcomputer$ sed -e '1,3s/hello/hi/g' a.sh
#this is a beautiful kit
#hi world kitty hhhh
hi fuzi hi shenmu
hello inner hello xian
hello good morning hello hello china
  • 输出行号并打印这一行
Qufangdemac:test qfcomputer$ sed  '=' a.sh
1
#this is a beautiful kit
2
#hello world kitty hhhh
3
hello fuzi hello shenmu
4
hello inner hello xian
5
hello good morning hello hello china
  • 多命令组合
Qufangdemac:test qfcomputer$ sed '1,3p;=' a.sh
#this is a beautiful kit
1
#this is a beautiful kit
#hello world kitty hhhh
2
#hello world kitty hhhh
hello fuzi hello shenmu
3
hello fuzi hello shenmu
4
hello inner hello xian
5
hello good morning hello hello china
  • 多命令组合
Qufangdemac:test qfcomputer$ sed -e '1,3p' -e '=' a.sh
#this is a beautiful kit
1
#this is a beautiful kit
#hello world kitty hhhh
2
#hello world kitty hhhh
hello fuzi hello shenmu
3
hello fuzi hello shenmu
4
hello inner hello xian
5
hello good morning hello hello china
  • 删除包含hello的行
Qufangdemac:test qfcomputer$ sed  '/hello/d' a.sh
#this is a beautiful kit
  • 打印包含hello的行
Qufangdemac:test qfcomputer$ sed -n '/hello/p' a.sh
#hello world kitty hhhh
hello fuzi hello shenmu
hello inner hello xian
hello good morning hello hello china
  • 打印包含hello的行
Qufangdemac:test qfcomputer$ sed -n '/^.*hello.*$/p' a.sh
#hello world kitty hhhh
hello fuzi hello shenmu
hello inner hello xian
hello good morning hello hello china
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容

  • 简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(p...
    699b979fc4da阅读 998评论 0 1
  • sed与awk实例 文本间隔 在每一行后面增加一空行 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文...
    stuha阅读 1,896评论 0 21
  • 这篇是当初看完Chinaunix论坛的帖子“抛砖引玉----翻译加注sed1line”的笔记,最近无聊从Evern...
    magic5650阅读 1,158评论 0 4
  • 一、前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等。如果我们相对这些文件进行一些...
    以七v为书阅读 1,512评论 0 5
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 4,396评论 3 74