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

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班