sed命令

文本处理三剑客:

grep, egrep, fgrep:文本过滤器
sed:Stream EDitor,流编辑器,行
    pattem space:模式空间、(基础)
    hold space:保持空间
awk:文本格式化工具,报告生成器

语法

sed [OPTION]...  ‘script‘  [input-file] ...
script:
    地址定界编辑命令
        :%s/

常用选项:

-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;同时有多个条件
    ~]# sed  -e  ‘[email protected]^#[[:space:]]*@@‘   -e  ‘/^UUID/d‘  /etc/fstab
-f  /PATH/TO/SED_SCRIPT_FILE
    每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;

地址定界:

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

编辑命令:

d:删除;
    sed ‘1,5d‘ /etc/fstab 
    sed ‘/^UUID/d‘ /etc/fstab
p:显示模式空间中的内容;打印
    sed ‘1~2p‘ /etc/fstab  #奇数行多显示一次;
a  \text:在行后面追加文本“text”,支持使用\n实现多行追加;
        sed ‘3a \new line‘  /etc/fstab
        sed ‘3a \new line\nnanother new line‘  /etc/fstab
        sed ‘/UUID/a \# and new device base on UUID‘ /etc/fstab
i  \text:在行前面插入文本“text”,支持使用\n实现多行插入;
        sed ‘3i \new line‘  /etc/fstab
c  \text:把匹配到的行替换为此处指定的文本“text”;
        sed ‘3c \new line‘  /etc/fstab
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;把匹配到的内容输出到指定文件;
        sed -n ‘/^[^#]/p‘ /etc/fstab
        sed ‘/^[^#]/w  /tmp/fstab.new‘ /etc/fstab
r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
        sed ‘3r /etc/issue‘ /etc/fstab
=:为模式匹配到的行打印行号;
    sed ‘/^UUID/=‘ /etc/fstab
!:条件取反;
    地址定界!编辑命令;
        sed ‘/^#/!d‘ /etc/fstab
s///:查找替换,其分隔符可自行指定,常用的有[email protected]@@, s###等;
    替换标记:
        g:全局替换;
        w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
        p:显示替换成功的行;

    练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
        ~]# sed  ‘[email protected]^[[:space:]]\[email protected]@‘ /etc/grub2.cfg
    练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
        ~]# sed  ‘[email protected]^#[[:space:]]*@@‘  /etc/fstab
    练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
        ~]# echo "/var/log/messages/" | sed ‘[email protected][^/]\+/\[email protected]@‘
			~]# echo "/var/log/messages" | sed -r ‘[email protected][^/]+/[email protected]@‘

高级编辑命令:分号分隔多个命令

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:在原有的每行后方添加一个空白行;
时间: 2024-12-28 10:51:14

sed命令的相关文章

学习笔记之sed命令使用

一.概述 1.  sed 全称为Stream Editor,就是行编辑器,意味着一次只处理一行文本,sed将被匹配到            的行放到自己特定的空间(通常称为模式空间)中进行编辑:然后再根据结果进行输出显示: 2.  在sed中还有一段空间称为保持空间,sed模式空间中的内容可以与保持空间的内容可以进            行自由互换,实际工作中用处很少,仅作参考: Sed工作流程如图 二.sed命令使用 sed [OPTION]... 'script' [input-file].

sed命令及vim的末行命令

sed:StreamEDitor,流编辑器,以行为单位对一个或多个文件进行编辑处理:每一次sed都会处理给定文件中的一行内容. 在sed处理文本时,将正在处理的当前行存储到临时的缓冲区中,称为"模式空间":用当前行去匹配给定的PATTERN,如果能匹配,则使用command编辑处理:如果不匹配,则默认输出至标准输出:然后继续处理下一行,直到文件的末尾. 默认情况下,sed的所有处理行为不会影响源文件的内容: 我们一般会使用sed命令来自动编辑一个或多个文件,简化对文件的循环操作: se

sed命令总结

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理. 什么是sed? sed是一种在线编辑器,它一次处理一行内容.sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结构.默认情况下,所有的输出行都被打印到屏幕上. sed的处理过程是什么? sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下:首先sed先把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每

linux sed命令详解

Linux环境:Ubuntu16.04 sed命令 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html http://blog.csdn.net/yiqingnian28/article/details/23133043 正则表达式 http://blog.csdn.net/wzzfeitian/article/details/8842371 sed -help 查看sed的用法 -n, --quiet, --sile

Linux的sed命令

一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces.sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf 那么这条命令是什么意思?接下来介绍sed命令答案自然就揭晓了.二.sed简介 sed:是一个编辑器,是一个强大的文件处理工具. sed作用:用来替换.删除,更新文件中的内容.sed能自动处理一个或多个文件. sed原理:sed

Linux三剑客之sed命令

选定行的范围:,(逗号) 删除操作:d命令 显示模式空间内容 追加(行下):a\命令 插入(行上):i\命令 退出:q命令 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 替换操作:s命令 替换文本中的字符串: 全面替换标记g 保持和获取:h命令和G命令 保持和互换:h命令和x命令 sed 简介 sed 工作原理 命令格式 常用选项: 地址定界: 编辑命令: 替换标记: sed元字符集(正则表达式) 高级编辑命令: sed用法实例 作业: 作业: sed命令 sed 简介 Stream

sed命令应用详解

sed应用详解 sed是文本处理处理工具"三大剑客"之一,它 是一种流编辑器,sed一次只处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.sed不会修改原文件内容,除非你使用重定向存储输出.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等. 用法:sed [OPTION]

sed命令(1)-基本语法和命令

注:学习sed命令的参考书籍为<Sed&Awk>,所以笔记也都是参考该书. sed命令的基本语法和命令: 一.sed命令语法 sed [options] {sed-commands} {input-file} sed是按每行依次读取input-file,然后执行sed-command,执行完的数据写入模式空间. options是用来传递sed命令的可选参数. 当需要使用多条命令的时候可以使用-e参数,其语法如下: sed [options] -e {sed-command1} -e {

第4章 sed命令

1 sed命令基本用法 sed(stream editor)是流编辑器,可对文本文件和标准输入进行编辑: sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,如果需要保存改动内容,可以选择使用下面两种方法: 重定向.w编辑命令. 2 调用sed有三种方法 在Shell命令行输入命令调用sed,格式为: sed [选项] ‘sed命令’ 输入文件 将sed命令插入脚本文件后,然后通过sed命令调用它,格式为: sed [选项] -f sed脚本文件输入文件 将sed命令插入脚本文件后,