sed工具

文本处理sed

一:简介

 Stream EDitor, 行编辑器
首先对于一个文本文件来说,它是由至上而下的一行或N行组成。
1、当用sed命令对文本进行处理的时候,sed先读取对象的文本文件的第一行到模式空间中。
2、当有内容进入“模式空间”时,sed的编辑命令对模式空间中的内容进行编辑操作(修改,替换,删除,追加,显示等等)
3、模式空间中的内容编辑处理完成之后,sed把此内容通过标准输出(默认为显示器)打印出来,并删除模式空间中的内容。
4、第一行处理结束。从新读取第二行的内容进行处理,直到最后一行。

二:语法

 用法:

sed [option]... 'script' inputfile...

 常用选项:

-n:不输出模式空间内容到屏幕,即不自动打印
-e:  多点编辑
   eg: sed -e 's/dog/cat/' -e 's/hi/lo/' pets
-f:/ PATH/SCRIPT_FILE :  从指定文件中读取编辑脚本
-r:  支持使用扩展正则表达式
-i.bak:  备份文件并原处编辑(.bak是后缀名)
  eg : sed -i.bak '1-2d' f1
     将f1文件备份生成f1.bak文件,再进行修改

 script: ’ 地址(要处理的行)+命令’

地址定界:
(1)  不给地址:对全文进行处理
(2)  单地址:
      #:  指定的行
/pattern/ :被此处模式所能够匹配到的每一行
        eg: sed -n /^r/ /etc/passwd
(3)  地址范围:
      #,#
      #,+#
        eg: sed -n '3,+6p' /etc/passwd(取第三行,到往下的六行)
    /pat1/,/pat2/
        eg: sed -n '/^h/,/^s/p' /etc/passwd
    #,/pat1/
        eg: sed -n '2p,/^s/' /etc/passwd
(4) ~ :步进

  1~2  奇数行(从第一行开始,每次加2)
  2~2  偶数行(从第二行开始,每次加2)
      eg: sed 100|sed '2~2p'

编辑命令:

d:  删除模式空间匹配的行
    eg:sed '90d' f1 删除第90行
p:  显示模式空间中的内容
    eg:sed '90p' f1 打印第90行
a [\]text :在指定行 后面 追加文本
   支持 使用\n (表示换行) 实现多行追加
     eg:sed '90anewline' f1
        sed '90a\new\nnewline\nnewline' f1
i [\]text :在行前面 插入文本
c [\]text :替换行为单行或多行文本
    eg: sed '10,90c\   new line1\nnew line2\nnewline3' f1
        把十到九十行都删了用后面的内容代替
w /path/somefile:  保存模式匹配的行至指定文件
    eg:sed '10,90w /root/f2' f1
       把f2的10到90行保存到f1
r /path/somefile :读取指定文件的文本至模式空间中匹配到的行后
    eg: sed '10r /etc/issue' f1
       将/etc/issue读入到f1的第10行后
=:  为模式空间中的行打印行号
    eg: sed '=' /etc/passwd


!:  模式空间中匹配行取反处理
    eg:sed -n '1~2!p' 取出偶数行

s/// :查找替换, 支持使用其它分隔符,s@@@

 替换标记:

  g:  行内全局替换
  p:  显示替换成功的行
  w  /PATH/TO/SOMEFILE :将替换成功的行
     eg:sed '2~2s/root/ROOT/g' f1 将偶数行的root替换成ROOT
高级编辑命令:
  h:  把模式空间中的内容覆盖至保持空间中
  H :把模式空间中的内容追加至保持空间中
  g:  从保持空间取出数据覆盖至模式空间
  G :从保持空间取出内容追加至模式空间
  x:  把模式空间中的内容与保持空间中的内容进行互换
  n:  读取匹配到的行的下一行 覆盖 至模式空间
  N :读取匹配到的行的下一行 追加 至模式空间
  d:  删除模式空间中的行
  D :删除 当前模式空间开端至\n (换行)的内容( 不再传 至标准输出),放弃之后的命令,
      但是对剩余模式空间重新执行sed

三:sed练习

1 、删除centos7 系统/etc/grub2.cfg 文件中所有以空白开头的行行首的空白字符

  sed 's/^[[:space:]]\+//' /etc/grub2.cfg

2 、删除/etc/fstab 文件中所有以# 开头,后面至少跟一个空白字符的行的行首的# 和空白字符

  sed 's/^#[[:space:]]\+//' /etc/fstab

3 、在centos6 系统/root/install.log 每一行行首增加#号

  sed 's/^/#/g' /root/install.log

4 、在/etc/fstab 文件中不以# 开头的行的行首增加#号

   sed 's/^[^#]/#/g' /etc/fstab

5 、处理/etc/fstab 路径, 使用sed 命令取出其目录名和基名

  取目录名echo "/etc/sysconfig/network"|sed -r 's@(^/.*/)([^/]+/?)@\1@'
  取基名:echo "/etc/sysconfig/network"|sed -r 's@(^/.*/)([^/]+/?)@\2@'

6 、利用sed 取出ifconfig 命令中本机的IPv4 地址

  ifconfig eth0|sed -n '2p' |sed -e 's/^.*r://' -e 's/ .*//'  

7 、统计centos 安装光盘中Package 目录下的所有rpm 文件的以. 分隔倒数第二个字段的重复次数

  法一:  ll /misc/cd/Packages/ |egrep '*.rpm' | sed -r 's@(^.*\.) 
              ( [^.]+ )\.rpm$@\2@' | sort | uniq -c

法二:  ls /misc/cd/Packages/ |egrep '*.rpm$'|sed -e 's@.rpm@@' -e 's@.*\.@@'
       | sort |uniq -c

8 、统计/etc/init.d/functions 文件中每个单词的出现次数,并排序(用grep 和sed 两种方法分别实现)

sed -nre 's@[^[:alpha:]]+@\n@gp' /etc/init.d/functions |sort|uniq -c|sort -n
grep -oE '\<[[:alpha:]_]+[[:alnum:]]+\>' /etc/init.d/functions 

9 、将文本文件的n 和n+1 行合并为一行,n为奇数行

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

推荐阅读更多精彩内容