2018-09-22 sed 命令详解

lunixs三大基本文本处理工具:grep sed awk

字符处理用法均涉及正则表达式,我们先学习正则

REGEXP: regular expression

pattern:

正则表达式分为2类:

basic REGEXP:基本

Extended REGEXP:扩展

基本正则表达式:

扩展的正则表达式:

字符匹配:

·:任意单个字符

?:其前字符0次或1次

+:匹配其前字符至少1次

{m,n}:不用加反斜线,

分组:(),\1,\2,\3……

或者

a|b :or的意思

grep -e =egrep

fgrep:fast 快速搜索,不支持正则表达式

sed基本用法:

Stream Editor

    行编辑器:逐行进行(全屏编辑器:vi)

sed每次把一行读取到模式空间,处理文本后输出到屏幕,sed对原文件不做任何处理,仅对模式空间中的文件做处理。

sed:模式空间

sed  'addressCommand'  file……

对这个文件中符合地址的行执行该命令

Address:

    1.StartLine,EndLine:1,100

    $:最后一行

    $-1:倒数第二行

    2./RegExp/ :/^root/

    3./pattern1/,/pattern2/ :第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束。

    4.LineNumber指定的行

    5.StartLine,+N:从startLine行开始,向后的N行,一共是N+1行。

command:

    d:删除符合条件的行

    p:显示符合条件的行(print)

    -n:静默模式     

不显示模式空间的内容,只显示命令相关内容

    a \string:在指定的行后面追加新行,内容为"string"

    i \string:在指定的内容前面添加新行,内容为string

    r  filename:将指定文件的内容添加至符合条件的行数,$r,用于合并文件。

    w:将地址指定的范围内的内容另存至指定文件中

    s/pattern/string/修饰符:查找并替换,将每一行中pattern替换成string,默认只替换每行第一次遇到的模式匹配到的string

        加修饰符

            g:全局替换

            i:忽略字符大小写

        s///:s###,s@@@

        l..e:

        &:引用模式匹配整个串

        也支持后向引用

        -i:直接修改原文件

        -e script  -e  script:可以同时执行多个脚本

        -f /PATH/TO/SED_SCRIPT:

        -r:表示使用扩展正则表达式

练习:将history中的空格删除

        history | sed ‘s#[[:space:]]##g'

习题:1.删除/etc/grub.conf文件中行首的空白符

sed  -r  's@^ [[:space:]]+@@g'  /etc/grub.conf

  -r:表示使用扩展正则表达式

  +:匹配其前字符至少1次

   g:全局替换

2.替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5;

sed  's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g'  /etc/inittab

    \(\) :分组

    \1:第一个左括号以及与之对应得右括号包含得所有内容

    \2:第二个左括号以及与之对应得右括号包含得所有内容

    [0-9]替换成5

3.删除/etc/inittab文件中的空白行;

    sed   '/^$/d'   etc/inittab

     d:删除符合条件的行

    ^$:空白行

4.删除/etc/inittab文件中开通的#号

    sed  's@^#@@g'   etc/inittab

    ^:锚定行首,这个字符后面得字符串必须出现在行首

5.删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

    sed  -r  's@#[[:space:]]+@@g'   /etc/inittab

     -r:表示使用扩展正则表达式

      +:匹配其前字符至少1次

6.删除某文件中以空白字符后面跟#类的行中开头的空白字符及#

    sed -r  's@^[[:space:]]+#@@g'   /etc/inittab

7.取出一个文件路径的目录名称;???

    echo  "/etc.rc.d" | sed -r  's@^(/.*/)[^/]+/?@\1@'

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

推荐阅读更多精彩内容