Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

linux shell编程指南第十章------sed 用法介绍2

$
0
0
前面已经讲述了s e d的基本功能,但是在脚本或命令行中使用s e d真正要做的是修改或删除

文件或字符串中文本。下面运用前面学过的知识讲述这一点。

使用s e d实现的一个重要功能是在另一个系统中下载的文件中剔除控制字符。
下面是传送过来的文件( d o s . t x t)的部分脚本。必须去除所有可疑字符,以便于帐号所有
者使用文件。


任务1。删除所有的#字符很容易,可以使用全局替换命令。这里用一个空格替换两个或
更多的#符号。

[root@localhost huangcd]# cat dos.txt 
12332##DISO##45.12
00332##LPSO##23.11
01299##USPD##34.46
[root@localhost huangcd]# sed 's/##*//g' dos.txt
12332DISO45.12
00332LPSO23.11
01299USPD34.46


任务2。删除所有行首的0。使用^符号表示模式从行首开始, ^ 0 *表示行首任意个0。模式
s / ^ 0 * / / g设置替换部分为空,即为删除模式,正是要求所在。

[root@localhost huangcd]# sed 's/^0*//g' dos.txt 
12332##DISO##45.12
332##LPSO##23.11
1299##USPD##34.46

[root@localhost huangcd]# cat dos.txt |sed 's/^0*//g' |sed 's/##*//g'
12332DISO45.12
332LPSO23.11
1299USPD34.46


当从数据库中执行语句输出时,一旦有了输出结果,脚本即可做进一步处理。通常先做
一些整理,下面是一个s q l查询结果。

为了使用上述输出信息做进一步自动处理,需要知道所存数据库名称,为此需执行以下
操作:
1) 使用s / - * / / g删除横线- - - - - -。
2) 使用/ ^ $ / d删除空行。
3) 使用$ d删除最后一行
4) 使用1 d删除第一行。
5) 使用awk {print $1}打印第一列。
命令如下,这里使用了c a t,并管道传送结果到s e d命令。

[root@localhost huangcd]# cat sql.txt 
Database      Size(MB)    Date Created


-------------------------------------
GOSOUTH       2244        12/11/97
TRISUD        5632        8/9/99


(2 row affected)
[root@localhost huangcd]# cat sql.txt|sed 's/-*//g'|sed '/^$/d'|sed '$d'|sed '1d'|awk '{print $1}'
GOSOUTH
TRISUD



当帐户完成设置一个文件时,帐号管理者可能要在文件中每个帐号后面加一段文字,下
面是此类文件的一部分:

任务是在每一行末尾加一个字符串‘ p a s s e d’。
使用$命令修改各域会使工作相对容易些。首先需要匹配至少两个或更多的数字重复出现,
这样将所有的帐号加进匹配模式。

[root@localhost huangcd]# cat ok.txt 
AC456
AC492169
AC9967
AC88345
[root@localhost huangcd]# sed 's/[0-9][0-9]*/& passed/g' ok.txt 
AC456 passed
AC492169 passed
AC9967 passed
AC88345 passed


要从命令行中向s e d传值,值得注意的是用双引号,否则功能不执行。

[root@localhost huangcd]# NAME="It's a go situation"
[root@localhost huangcd]# REPLACE="GO"

[root@localhost huangcd]# echo $NAME|sed "s/go/$REPLACE/g"
It's a GO situation




将当前工作目录返回给s e d,删除第一个\:

[root@localhost huangcd]# echo $PWD|sed 's/^\///g'
home/huangcd
[root@localhost huangcd]# echo $PWD
/home/huangcd

将"Mr Wi l l i s "字串返回给s e d并在M r后而追加" B r u c e "。

[root@localhost huangcd]# echo "Mr Willis" | sed 's/Mr/& Bruce/g'
Mr Bruce Willis

s e d删除字符串“a c c o u n t s . d o c”首字符。

[root@localhost huangcd]# echo "accounts.doc" |sed 's/^.//g'
ccounts.doc



作者:huang2009303513 发表于2013-12-3 0:37:30 原文链接
阅读:172 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>