让我们再来继续研究
sed
与正规表示法的配合练习!假设我只要
MAN
存在的那几行数据,
但是
含有
#
在内的批注我不想要,而且空白行我也不要!此时该如何处理呢?可以透过这几个步骤来实
作看看:
步
骤
一:先使用
grep
½关键词
MAN
所在行取出
来
[dmtsai@study ~]$
cat /etc/man_db.conf | grep 'MAN'
# MANDATORY_MANPATH manpath_element
# MANPATH_MAP path_element manpath_element
#
MANDB_MAP global_manpath [relative_catpath]
# every automatically generated MANPATH includes these fields
....(
后面省略
)....
步
骤
二:
删
除掉批注之后的
数
据!
[dmtsai@study ~]$
cat /etc/man_db.conf | grep 'MAN'| sed 's/#.*$//g'
MANDATORY_MANPATH
/usr/man
....(
后面省略
)....
#
从
上面可以看出
来
,原本批注的
数
据都
变
成空白行啦!所以,½下
来
要
删
除掉空白行
[dmtsai@study ~]$
cat /etc/man_db.conf | grep 'MAN'| sed 's/#.*$//g' | sed '/^$/d'
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH
/usr/share/man
MANDATORY_MANPATH /usr/local/share/man
....(
后面省略
)....
.
直½修改
文件
内容
(
危险动作
)
你以为
sed
只有这样的能耐吗?那可不!
sed
甚至可以直½修改文件的内容呢!而不必使用管线命
令或数据流重导向!
不过,由于这个动作会直½修改到原始的文件,所以请你千万不要随便拿系统
配置文件来测试喔!
我们还是使用你下载的
regular_express.txt
文件来测试看看吧!
范例六:利用
sed
½
regular_express.txt
内
每一行
½
尾若
为
.
则换
成
!
[dmtsai@study ~]$
sed
-
i 's/
\
.$/
\
!/g' regular_express.txt
#
上
头
的
-
i
选项
可以
让
你的
sed
直½去修改后面½的
文件
内
容而不是由屏幕
输
出喔!
#
这个
范例是用在取代!
请
您自行
cat
该
文件
去查
阅½
果
啰
!
范例七:利用
sed
直½在
regular_express.txt
最后一行加入『
# This is a test
』
[dmtsai@study ~]$
sed
-
i '$a # This is a test' regular_express.txt
#
由于
$
代表的是最后一行,而
a
的
动
作是新增,因此
该
文件
最后新增
啰
!