sed

文本处理工具sed

sed  Stream EDitor 行编辑器

sed 是一种流编辑器,它一次处理一行内容,处理时把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)接着用sed 命令处理缓冲区的内容,处理完成后把缓冲区的内容送往屏幕,然后读入下一行,执行下一个循环,但不会清空保留空间,这样不断重复,知道文件末尾,文件内容并没有改变,除非你使用重定向存储输出

功能:主要用来自动编辑一个或多个文件,简化对文件复杂的操作,编写转换程序等

sed工具的用法 sed 【option】 ….  ‘script’  inputfile ………

[option] 选项  -n : 不输出模式空间内容到屏幕上,即不自动打印

-e : 多点编辑

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

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

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

‘script’       ‘地址命令’

1 不给地址,对全文进行处理

2 单地址: # : 指定行数        $ :最后一行

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

3 地址范围: # , #           # , +#          /pat1/ , /pat2/         # , /pat1/

4 ~        :   进步    1~2  奇数行   2~2  偶数行

例如:

创建一个文件 f1 里面包含 1-10数字  用命令sed来做实验

sed  ‘4p’  f1

RD@RNT`%M1{V)(%6U~PUKGA

只打印第4行 用 -n

sed  -n  ‘4p’ f1

TJ6A`SU97%%J~SE]00~U(2N

打印偶数行  用 ‘2~2p’  打印偶数    用’1~2p’打印奇数

sed -n  ‘2~2p’  f1

4VNN%{P[Q}MOVMQ}7([@@SU

-e 多点打印

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

sed   -ne ‘2p’ -e ‘4p’ f1

BP9H8VMF4J{)QUT`L4{$]VE

-i.bak 备份 并对原文件编辑    sed  -i.bak ‘/aliaseas/aalias p=poweroff’  .bashrc

8@4(I]53A@B_Q6NV6M@(N~X

8@4(I]53A@B_Q6NV6M@(N~X

-f 从文件中读取编辑脚本

sed -nf  sedscript.txt f1

2Y0E_QNW0_XIXC8}SKMMOR6

sed 工具的编辑命令

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

5S%C_4SU}6X5JG2FIS)H9R4

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

R5(UBSV3G[56ITTU{8OI

=: 为模式空间中的行打印行号  显示在/etc/passwd 文件中含有root 的行号

FSBD[%)T{TKXO9PB7UU$1TC

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

N9TK_PUYAY@NSI}U{4QVVWL

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

UHIWT$VLEMJ5FXT~PSH]XTK

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

0]}]IQ3JWPL@)CUB_5}39Y5

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

IRZ$_[1V%V%X$(~[_7}4

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

]L_Y7HE6IS)OTI24B8_1M`F

 

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

在/etc/default/grub    给GRUB_CMDLINE_LINUX=”crashkernel=auto rhgb quiet” 后面加个字符串xyz

X]JYY)DJCBCYJ`IPP]Y`8V9

 

高级编辑命令

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

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

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

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

G :从保持空间取出数据追加至模式空间

x :  把模式空间内容与保持空间内容互换

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

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

d :删除模式空间中的行

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

GSV_ZDCU0ARYST_7$NBFCB9

只保留奇数行

@~%8GP}20JRK$H``4U6R0)S

倒序显示

{OL5{Z06XDGRMK1HJ27]CUY

7787`S_{Q}U5JEQF%1LCYIR

只留最后一行

FJ}`$9B6WW5}((PSI}DQ_Z5

只保留最后2行

R6$$6JZJI7R}@$F3@E8JBB3

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

}OX13N$UG1091E6]4[M8`B5

 

 

 

 

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

(0)
祝韵杰-桃子祝韵杰-桃子
上一篇 2018-05-02 20:44
下一篇 2018-05-03 10:27

相关推荐

  • Linux启动和内核管理

    系统启动和内核管理 Linux组成 Linux:kerne+rootfs(应用程序) kernel:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 roots:程序和glibc 函数:相当于命令的集合 库:函数集合,function,调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文…

    Linux笔记 2018-05-13
  • 课堂笔记(6)

    笔记

    Linux笔记 2018-04-08
  • TCP/IP

    TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。 TCP/IP分层: 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为网络号+子网号+主机号 域名系统:通俗的来说,就是一个数据库,可以将主机名转换成IP地址 RFC:TCP/IP协议的标准文档 端口号:一个逻辑号码,IP包所带有的标记 Socket:…

    Linux笔记 2018-05-05
  • 系统启动和内核管理之系统启动实验

    本文主要记录:内核文件损坏导致系统无法启动的修复过程

    2018-05-07
  • Shell脚本进阶一

    随着课程的进度,对shell脚本进行进行全面的总结

    Linux笔记 2018-04-23
  • Linux第1-5天的基础命令。

      alias 是显示当前shell中所有别名。 我们可以将一些常用且较长的命令进行简化,就是别名。 alias 新的命令 = ‘原命令’     unalias 删除别名 -p  是查看系统中已经设置的别名   bc   是linux中的计算器语言    ^C  退出   clock 显示硬件时间 -s 使系统时间和硬件时间同…

    Linux笔记 2018-03-31