9月15日 sed

sed:stream editor:流编辑器

是一种文本编辑器:

一次读一行,读到自己专用的“模式空间(pattern space)”中

在模式空间中对文本进行处理,

如果符合模式,则执行编辑操作,否则不执行操作。无论处理与否,都输出到屏幕

支持正则表达式

     -r支持扩展正则

     -n静默模式:不输出,只编辑

     -e script1 �Ce script2 �Ce script3多点编辑

     -f 从配置文件中读取脚本,然后按脚本执行

     -i 直接修改源文件;默认是不修改源文件的

 

地指定界:

     #:指定行

     $:最后一行

     /regexp/:能够被regexp所匹配的行

     \%regexp%:同上

image

        /regexp/| \%regexp%忽略字符大小写

开始行,结束行

     #, /regexp/:从#开始,披到到/regexp/结束

     #,#1:#开始,#1结束

     /regexp1/,/regexp2/,从匹配1开始到匹配2结束

     #,+n:#开始,匹配之后的n行

     first~step:first开始,step步进

 

 

d:删除 sed ‘1,4d’删除

image 

=显示行号

image

a:追加行 append

image 

i:插入 insert

image 

c:替换change

image

p:打印模式空间中的行

image

s/regexp/replace/用后面替换前面,可以使用后向引用

          g:全局替换

           i:不区分大小写

image

w:另存到其他文件

image

image

r:插入另一个文件,完成文件合并

练习:

1、删除/boot/grub/grub.conf文件中所有行首的空白字符

我在centos7上没找到这个文件,找到了/boot/grub2/grub.cfg,删除了里面的行首#

image 

2、删除/etc/fstab文件中所有#开头,后至少跟一个空白字符的行的行首的#和空白字符

image

3、把/etc/fstab文件的奇数行另存为/tmp/fstab.3

image

4、echo一个文件路径给sed命令,取出其基名,进一步取出其路径名

还没想出来

保持空间,hold space

保存模式空间中的内容

h:用模式空间内容覆盖保持空间内容

H:用模式空间内容追加保持空间内容

g:从保持空间中取1行内容覆盖到模式空间

G:从保持空间取呢容追加模式空间

x:交换内容

n:读取匹配行下一行,覆盖保持空间

N:读取匹配行,追加保持空间

d:删除模式空间的内容

D:删除多行模式空间中的首行

以上内容都可以!取反

image

 

sed ‘G’ /etc/fstab,在每一行后面添加空白行

image 

sed ‘$!d’ /etc/fstab 保留最后一行

image

sed ‘/^$/d;G’ /etc/issue,保证指定文件的每一行后面有且只有一个空白行

image 

sed ‘n!d’ /etc/issue,保留奇数行

image

sed �Cn ‘1!G;h;$p’ /etc/issue 倒序!

你可能感兴趣的:(Stream,表达式,编辑器,空间)