sed文本处理工具

Sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
下面来说说它的用法:
sed [option]… ‘script’ inputfile
sed:
-n:取消自动打印,输出到屏幕。
-e: 多点编辑,对每行处理时,可以有多个Script 即可以跟多个命令。
-f: 把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
-r: 支持扩展的正则表达式
-i: 直接将处理的结果写入文件
-i.bak  在将处理的结果写入文件之前先备份
script
地址定界:
(1) 不给地址:对全文进行处理
如:sed -n ‘p’ 文件
(2) 单地址:
#: 指定的行
如:sed -n ‘2p’ 文件
/pattern/:被此处模式所能够匹配到的每一行
如:sed -n ‘/linux/p’文件
(3) 地址范围:
#,#
如:sed -n ‘2,3p’
#,+#
如: sed -n ‘2,+1p’
/pat1/,/pat2/
如: sed -n ‘/redhat/,/linux/p’
#,/pat1/
如:sed -n ‘2,/linux/p’
(4) ~:步进
1~2 奇数行
2~2 偶数行
如:sed -n ‘1~2p’  只打印奇数行
sed -n ‘2~2p’  只打印偶数行

编辑命令:
d: 删除模式空间匹配的行,并立即启用下一轮循环
如:sed ‘2d’ /etc/passwd (删除/etc/passwd文件中的第二行)
p:打印当前模式空间内容,追加到默认输出之后
如:sed ‘2p’ /etc/passwd
a [\]text:在指定行后面追加文本,支持使用\n实现多行追加
如:sed ‘2a\123\n456\n789‘ /etc/passwd
i [\]text:在行前面插入文本
如:sed ‘2i\123\n456\n789’ /etc/passwd
c [\]text:替换行为单行或多行文本
如:sed ‘2c\123\n456\n789’ /etc/passwd
w /path/somefile: 保存模式匹配的行至指定文件
如:sed -n ‘3w /root/3.file’ /root/bin
r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
如:sed ‘3r /root/mage.txt’ /etc/passwd
=: 为模式空间中的行打印行号
如:sed ‘=’ /etc/fstab
!:模式空间中匹配行取反处理
如:sed -n ‘2!p’ /etc/fstab
s///:查找替换,支持使用其它分隔符,s@@@,s###替换标记。
如:sed -n ‘s/root/rooter/g’ /etc/passwd
g: 行内全局替换
如:sed ‘s/root/rooter/g’ /etc/passwd
p: 显示替换成功的行
如:sed -n ‘s/root/rooter/gp’ /etc/passwd
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
高级编辑命令:
h: 把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行覆盖至模式空间
N:读取匹配到的行的下一行追加至模式空间
d: 删除模式空间中的行
D:删除当前模式空间开端至\n的内容(不再传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
示例:
sed -n ‘n;p’ FILE  显示偶数行
sed ‘1!G;h;$!d’ FILE  倒序显示
sed -n ‘1!G;h;$p’ 倒序显示
seq 7 |sed ‘n;d’ 显示奇数
sed  ‘N;D’ 显示最后一行
sed ‘$!d’  显示最后一行
sed ‘G’  每行之间加空行
sed ‘g’  把每行内容替换成空行
sed ‘/^$/d;G’  确保每一行下面都有一个空行

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89141

(0)
凉生凉生
上一篇 2017-12-01 20:40
下一篇 2017-12-02 10:51

相关推荐

  • bash编程初体验(一)

    bash编程初体验(一) 认识bash编程 变量与赋值 算术与逻辑运算 条件测试与退出状态 认识bash编程 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell,我们要认识的bash中,就是在bash的环境下的一种编程。 众所周知,程序=指令+数据,由此也决定了两种不同的编程风格,过程过与对象式; 过程式:以指令为…

    Linux干货 2016-08-15
  • 硬链接与软链接

    1、关于硬链接和软链接是什么   硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。 (1…

    Linux干货 2016-10-20
  • 常见的单机虚拟网络类型

    前言:   无论是互联网还是物联网,他们的网络模型都是可以见的,而虚拟化和云计算中的网络模型 要比这些模型要复杂的多,有些设备你是可以到也有一些设备你是看不到的,这给我们运维人员带来的技术挑战。通过学习Xen、KVM虚拟化技术,对单机虚拟网络模型有了初步的认识,以下是我对单机虚拟网络模型的认识。 一、NAT模型    …

    Linux干货 2015-09-01
  • 马哥教育网络班22期第六周课程练习1

    1、1,$s/^\s\+/#/g 2、1,$s/^\s\+$//g 3、1,$s/^#\s//g 4、1,3s/^/#/g 5、sed -e s/gpgcheck=1/gpgcheck=0/g -e s/enabled=0/enabled=1/g /etc/yum.repos.d/CentOS-Media.repo  6、0 /4 * * * cp…

    Linux干货 2016-09-26
  • N25-第二周作业

    ①Linux文件管理命令常用方法 Linux常见文件类型 -:files,常规文件 d: directory,目录文件 b: block device,块设备文件 c:character device,字符设备文件 l:symbolic link,符号链接文件 p: pipe,命名管道 s: socket,套接字文件 命令管理工具指南:cp、rm、mv 1.…

    Linux干货 2016-12-13
  • 加深对grep命令和find命令的熟悉

    1、显示当前系统上root、fedora或user1用户的默认shell。 grep -E “^(root|fedora|user1)\>” /etc/passwd | cut -d: -f7 [root@localhost ~]# grep -E “^(root|fedora|user1)\>” /etc/passwd …

    Linux干货 2017-07-30