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
下一篇 2018-05-03

相关推荐

  • Linux命令之date

    语法,选项,参数

    Linux笔记 2018-07-22
  • grub stage1、grub stage1.5、grub stage2的破坏与修复实验

    grub stage1、grub stage1.5、grub stage2的破坏与修复实验 一、破坏并修复grub  stage1       446个字节 hexdump  -C  /dev/sda  -n  512             查看MBR的512个字节   dd    if=/dev/zero    of=/dev/sda    b…

    Linux笔记 2018-05-13
  • Linux基础和帮助

    多动手,勤思考

    2018-03-31
  • liunx 系统笔记

    服务器的硬件组成  如图: 服务器配置示例:

    Linux笔记 2018-04-01
  • 第一周作业笔记

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    Linux笔记 2018-06-21
  • 软件包管理 1 —–基本知识 rpm yum

    软件包管理,要做到如何管理软件 ,包括安装 ,卸载, 基本的功能查询,搜索等重点如何使用rpm包yum管理如何编译安装**软件 运行和编译 **ABI:Application Binary Interface 操作系统接口标准,调用2进制程序的接口Windows 与Linux不兼容ELF(Executable and Linkable Format)PE (…

    Linux笔记 2018-04-22