sed大法好

sed

sed概念

(1)基本概念:sed是流编辑器(stream editor),A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).作用就是对输入的流(文件或者从一个管道输入的流)的最基本的文本处理。

(2)工作原理:处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

(3)主要用途:文本处理,自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

sed的基本语法

sed [OPTION]... 'script' [input-file] ...

script:地址定界编辑命令:

(1) 空地址:对全文进行处理;
(2) 单地址:
    #:指定行;
    /pattern/:被此模式所匹配到的每一行;
(3) 地址范围
    #,#:
    #,+#:
    #,/pat1/
    /pat1/,/pat2/
    $:最后一行;
(4) 步进:~
    1~2:所有奇数行
    2~2:所有偶数行

选项:

-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;
-f /PATH/TO/SED_SCRIPT_FILE
    每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;

编辑命令:

d:删除;
p:显示模式空间中的内容;
a \text:在行后面追加文本“text”,支持使用\n 实现多行追加;
i \text:在行前面插入文本“text”,支持使用\n 实现多行插入;
c \text:把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合
并;
=:为模式匹配到的行打印行号;
!:条件取反;
地址定界!编辑命令;
s///:查找替换,其分隔符可自行指定,常用的有 s@@@, s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;

练习:

1、删除/etc/passwd中的1-5行;

sed大法好

2、删除UUID开头的行

sed大法好

3、删除#开头的所有行

sed '/^#/d' /etc/passwd

4、禁止输出模式空间内容

sed大法好

5、删除1 3 5 7 9行

sed大法好

6、显示所有奇数行的模式空间内容

sed大法好

7、插入、追加,#i是#行之前,#a是#行之后

sed大法好

8、打印1-3行,用-n 加p

sed大法好

9、查看passwd文件的root到tss的行

sed大法好

10、替换行里面的第一个,第二个,全部

cat -n /etc/passwd |sed  's/root/ROOT/1'
cat -n /etc/passwd |sed  's/root/ROOT/2'
cat -n /etc/passwd |sed  's/root/ROOT/g'

sed大法好

11、另存为用w

 sed -n 's/root/ROOT/w /root/sh/tx' /etc/passwd

12、-i,直接编译原文件

sed大法好

13、读取指定文件的内容,到指定行后。

sed大法好

sed大法好

练习 1:删除/boot/grub/grub2.cfg 文件中所有以空白字符开头的行的行首的所有空白 字符; ~]# sed 's@^[[:space:]]+@@' /etc/grub2.cfg

练习 2:删除/etc/fstab 文件中所有以#开头的行的行首的#号及#后面的所有空白字符; ~]# sed 's@^#[[:space:]]*@@' /etc/fstab

练习 3:输出一个绝对路径给 sed 命令,取出其目录,其行为类似于 dirname; ~]# echo "/var/log/messages/" | sed 's@[^/]+/\?$@@' ~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'

高级编辑命令:

h:把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g:把保持空间中的内容覆盖至模式空间中;
G:把保持空间中的内容追加至模式空间中;
x:把模式空间中的内容与保持空间中的内容互换;
n:覆盖读取匹配到的行的下一行至模式空间中;
N:追加读取匹配到的行的下一行至模式空间中;
d:删除模式空间中的行;
D:删除多行模式空间中的所有行;

示例:

sed -n 'n;p' FILE:显示偶数行;
sed '1!G;h;$!d' FILE:逆序显示文件的内容;
sed ’$!d' FILE:取出最后一行;
sed '$!N;$!D' FILE:取出文件后两行;
sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白
行;
sed 'n;d' FILE:显示奇数行;
sed 'G' FILE:在原有的每行后方添加一个空白行;

原创文章,作者:N24_yezi,如若转载,请注明出处:http://www.178linux.com/62046

(0)
N24_yeziN24_yezi
上一篇 2016-12-02 17:20
下一篇 2016-12-02 18:03

相关推荐

  • N23 9月底的

    1.linux下文件管理命令 cat 读取文件 或者连接显示touch 建立文件 改变时间 cp 复制文件 -f 强制复制 不论覆盖-r 连同子目录递归处理-l 建立硬链接-s 建立符号连接 rm 删除文件 -r 递归删除 连同子目录也一起干掉-f 强制 删除文件或者目录-d 直接删除目录 file 辨识文件类型 find 查找文件 whereis 查找文件…

    Linux干货 2016-09-25
  • GREP命令学习笔记

    GREP命令,全称:Global search REgular expression and Print out the line. 是一个非常强大的文本搜索命令,与SED(stream editor,文本编辑工具)和AWK(文本分析、报告生成器)并称文本处理三剑客。 一.GREP命令基本使用格式 grep [OPTIONS] PATTERN [FILE&#…

    Linux干货 2016-06-22
  • GRUB管理

    对于运维人员来说,想要熟练掌握linux,那么久要对linux的启动流程有一个详细的了解,而今天我们就一起来学习一下linux启动中最重要的一个阶段——GRUB引导阶段。 Linux启动流程 grup: GRand Unified Bootloader  由上图可知,grub属于系统启动过程中一个必须的阶段。而这个阶段又分为了三个小的阶段,分别是s…

    2017-09-02
  • smb

    练习: 创建一个共享ftp,路径为/var/ftp/pub;要求仅centos和gentoo用户能上传;此路径对其它用户不可见; [root@node1 ~]# yum -y install samba [root@node1 ~]# vim /etc/samba/smb.con…

    Linux干货 2016-10-23
  • Linux命令的别名与管道命令的详解

    Linux中命令的别名与管道命令的详解 命令别名 在使用和维护liunx时,将会使用大量的命令,而一些命令加上参数时输入比较繁琐,此时我们可以定义一个别名来代替繁琐的命令。 系统定义的别名 可以输入 alias 命令查看系统中已经定义好的命令的别名; [root@localhost ~]# alias alias cp=’cp -i’ alias egrep…

    Linux干货 2018-03-03
  • 深入了解磁盘结构

    一、     linux中常见的磁盘:   无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCS…

    Linux干货 2016-08-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-07 23:45

    总结的很好,最后部分可以演示一下过程!!