文本处理工具sed

一个强大的文本处理sed,行编辑器

9

文本处理工具  sed:

sed介绍

sed    行编辑器(用来编辑一个或多个文件)

sed     [option ] …   ‘script’   inputfile…

常用选项:

-n    关闭自动打印

-e: 多点编辑

-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本

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

-i.bak: 备份文件并原处编辑

script:   ‘地址命令’

地址定界:

  1. 不给地址:对全文进行处理
  2. 单地址:# :指定行; $:最后一行

/pattern/:被此处模式所匹配到的每一行

  1. 地址范围:#,# #,+#        /pat1/,/pat2/         #,/pat1/
  2. ~:步进 1~2 奇数行        2~2 偶数行

编辑命令;

d: 删除模式空间匹配的行,并立即启用下一轮循环

p:打印当前模式空间内容,追加到默认输出之后

a [\]text:在指定行后面追加文本     支持使用\n实现多行追加

i [\]text:在行前面插入文本

c [\]text:替换行为单行或多行文本

w    /path/somefile: 保存模式匹配的行至指定文件

r     /path/somefile:读取指定文件的文本至模式空间中 匹配到的行后

=: 为模式空间中的行打印行号

!:模式空间中匹配行取反处理

搜索替代

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

替换标记:

g: 行内全局替换

p: 显示替换成功的行

w  /PATH/TO/SOMEFILE:将替换成功的行保存至文件中

 

例如: sed  -r   ‘s/(.*)/magedu\1/’   /etc/passwd       //每行开头加magedu

sed -r  ‘/GRUB_CMDLINE_LINUX/s/(.*)”$/\1 xyz”/’   /etc/default/grub

sed -r  ‘/GRUB_CMDLINE_LINUX/s/”$/ xyz”/’   /etc/default/grub

ifconfig ens32 |sed -n ‘2p’|sed  -r  ‘s@.*inet (.*) net.*@\1@‘   //取IP地址

ifconfig ens32 |sed  -r  ‘2!d;s@.*inet (.*) net.*@\1@‘      //取IP地址

ifconfig ens32 |sed  -n ‘2p’ |sed -e ‘s/.*inet//’ -e ‘s/ netmask.*//’     //取IP地址

echo “/etc/sysconfig/network”  |sed -r ‘s/(.*\/)([^/].*\/?$)/\2/’  //取基名或文件名

 

sed两种空间模式:模式空间:相当于处理数据的地方

保持空间:相当于存储

高级编辑命令

P:打印模式空间开端至\n内容,并追加到默认输出之前

h: 把模式空间中的内容覆盖至保持空间中

H:把模式空间中的内容追加至保持空间中

g: 从保持空间取出数据覆盖至模式空间

G:从保持空间取出内容追加至模式空间

x: 把模式空间中的内容与保持空间中的内容进行互换

n: 读取匹配到的行的下一行覆盖至模式空间

N:读取匹配到的行的下一行追加至模式空间

d: 删除模式空间中的行

D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间 不包含换行符,则会像发出d命令那样启动正常的新循环

sed   -n  ‘n;p’    file或   sed  -n   ‘2~2p’    file    //打印偶数行

sed   ‘1!G;h;$!d’  file   //倒序显示文本内容

sed  ‘N;D’   file          //只保留最后一行内容

sed  ‘$!N;$!D’     file   //保留最后两行文本

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

(0)
qljqlj
上一篇 2018-04-19 19:14
下一篇 2018-04-19 19:24

相关推荐

  • sed的高级用法,rpm .yum的使用以及磁盘存储和文件系统

    sed的高级用法 和 包管理器(rpm , yum )

    Linux笔记 2018-04-19
  • d1-d2 命令总结

    1.bc 计算器 [root@centos7 ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For det…

    Linux笔记 2018-07-19
  • Linux-标准IO和管道

    打开的文件都有一个fd:file description(文件描述符) [root@centos7 data]#exec 8<>/data/hosts [root@centos7 data]#ll /proc/$$/fd total 0 lrwx——. 1 root root 64 Mar 30 14:22 0 ->…

    2018-04-05
  • PXE自动化安装centos6与centos7

    PXE自动化安装centos7系统1、确保防火墙和selinux全部关闭2、yum -y install dhcp tftp-server httpd syslinux3、启动相关服务systemctl start httpdsystemctl enable httpdsystemctl start tftp.servicesystemctl enable …

    Linux笔记 2018-05-28
  • 常用信息查询

    版本 发行版本 cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core) /*1708 17年8月发布*/ lsb_release -a /*显示上面文件内容*//*要安装工具*/ nano /etc/centos-release /*修改*//*生产中 尽量不要暴露版本号*/ 内核版本 name…

    Linux笔记 2018-04-08
  • N31Linux第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]#who |cut -d ‘ ‘ -f1 |sort -u 2、列出最后登录到当前用户系统的用户相关信息。 [root@localhost ~]#w |cut -d ‘ ‘ -f1 |…

    2018-07-16