linux文本模式cfg,Linux文本工具sed

Sed

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

sed用法:

sed [OPTION]...  'script'  [input-file] ...

常用选项:

-n:静默模式(禁止在匹配不到的情况下,直接屏幕输出,仅显示script处理后的结果)

-e script:多点编辑(可同时运行多个脚本)

-f script-file:读取脚本文件并运行(文件内每行都有匹配条件)

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

-i:直接编辑源文件

script:

地址定界编辑命令

地址定界

1.空地址:对全文进行处理

2.单地址:

#:指定的行(#表示数字)

/pattern/:被此模式所匹配到的每一行(被正则表达式匹配)

3.地址范围:

#,#:第几行到第几行

#,+#:相对地址表示法(如3,+6表示从第3行开始往下加6行)

#,/pat1:从第#行,到被模式1匹配到之间的行

/pat1,/pat2:从第一个模式开始到第二个模式结束的行

$:最后一行

4.步进:

~

1~2:所有基数行(从第1行开始往下每隔1行)

2~2:所有偶数行(从第2行开始往下每隔1行)

编辑命令

d:删除

p:显示模式空间中的内容(如果不加-n,默认匹配到的行再显示一遍)

a  \text:在行后面追加文本“text”,支持使用\n实现多行追加

i  \text:在行前面插入文本“text”,支持使用\n实现多行插入

c  \text:把匹配到的行替换为此处指定的文本“text”

w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中

r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并

=:为模式匹配到的行打印行号

!:条件取反

s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等(s/查找内容/替换内容/替换标记)

替换标记:

g:全局替换;

i:忽略大小写

w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;

p:显示替换成功的行;

Sed命令的使用:删除/tmp/grub.cfg文件中所有行的行首的空白字符(删除其实就是让其替换为空)

首先看下/tmp/grub.cfg文件

[root@localhost ~]# cat /tmp/grub.cfg

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub2-mkconfig using templates

# from /etc/grub.d and settings from /etc/default/grub

#

### BEGIN /etc/grub.d/00_header ###

set pager=1

if [ -s $prefix/grubenv ]; then

load_env

fi

if [ "${next_entry}" ] ; then

set default="${next_entry}"

set next_entry=

save_env next_entry

set boot_once=true

else

set default="${saved_entry}"使用sed命令进行操作后

[root@localhost ~]# sed 's/^[[:space:]]\+//' /tmp/grub.cfg

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub2-mkconfig using templates

# from /etc/grub.d and settings from /etc/default/grub

#

### BEGIN /etc/grub.d/00_header ###

set pager=1

if [ -s $prefix/grubenv ]; then

load_env

fi

if [ "${next_entry}" ] ; then

set default="${next_entry}"

set next_entry=

save_env next_entry

set boot_once=true

else

set default="${saved_entry}"

2.删除/tmp/grub.cfg文件中所有以#开头的行,行首是#及后面所有的空白字符首先看下/etc/grub.conf文件

[root@localhost ~]# cat /tmp/grub.cfg

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub2-mkconfig using templates

# from /etc/grub.d and settings from /etc/default/grub

#使用sed命令进行操作后

[root@localhost ~]# sed 's/^#[[:space:]]//' /tmp/grub.cfg

#

DO NOT EDIT THIS FILE

#

It is automatically generated by grub2-mkconfig using templates

from /etc/grub.d and settings from /etc/default/grub

#

3.取/etc/fstab文件中偶数行,另存为/tmp/newfstab首先看下/etc/fstab文件

[root@localhost ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Fri May 13 14:28:49 2016

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=b66544bf-32a4-4bef-82cb-0059f9e94b34 /                       xfs     defaults        0 0

UUID=321571a3-d498-4677-be37-fc18793f3ca1 /boot                   xfs     defaults        0 0

UUID=54e25c6d-d378-4c2f-9df4-62d25f6065f8 /usr                    xfs     defaults        0 0

UUID=9b2e4d08-b266-47fc-b8d1-3f81b76094fe swap                    swap    defaults        0 0使用sed命令进行操作后

[root@localhost ~]# sed '2~2w /tmp/newfstab' /etc/fstab

再来查看另存为的/tmp/newfstab

[root@localhost ~]# cat /tmp/newfstab

#

# Created by anaconda on Fri May 13 14:28:49 2016

# Accessible filesystems, by reference, are maintained under '/dev/disk'

#

UUID=321571a3-d498-4677-be37-fc18793f3ca1 /boot                   xfs     defaults        0 0

UUID=9b2e4d08-b266-47fc-b8d1-3f81b76094fe swap                    swap    defaults        0 0

4.echo一个绝对路径给sed,取其基名使用sed命令操作后(如果用s///,以/的所有路径需要\转译,避免麻烦,直接使用s@@@)

[root@localhost vars]# echo /etc/yum/vars/ | sed 's@[^/]\+/\?@@'

/yum/vars/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值