Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1351841
  • 博文数量: 245
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3094
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 14:51
文章存档

2011年(2)

2009年(152)

2008年(91)

我的朋友

分类:

2008-05-20 08:55:57

显示文件中的控制字符

1、$vi dos.txt
进入vi后,用ctrl+v 再用ctrl+M产生控制字符^M不知对不对


使用cat -v filename命令查看编辑好的文件

CODE:
[sam@chenwy sam]$ cat -v dos.txt
12332##DISO##45.12^M
00332##LPSO##23.14^M
01299##USPD##34.46^M

s e d格式为:

CODE:
[ a d d r e s s,[ a d d r e s s ] ] l

‘l’意为列表。一般情况下要列出整个文件,而不是模式匹配行,因此使用l要从第一到最后一行。模式范围1,$即为此意。

CODE:
[sam@chenwy sam]$ sed -n '1,$l' dos.txt
12332##DISO##45.12\r$
00332##LPSO##23.14\r$
01299##USPD##34.46\r$

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

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

CODE:
[sam@chenwy sam]$ sed 's/##/ /g' dos.txt
12332 DISO 45.12
00332 LPSO 23.14
01299 USPD 34.46

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

CODE:
[sam@chenwy sam]$ sed 's/##/ /g;s/^0*/ /g' dos.txt
12332 DISO 45.12
332 LPSO 23.14
1299 USPD 34.46

最后去除行尾^ M符号,为此需做全局替换。设置替换部分为空。模式为:
‘s / ^ m / / g’,注意‘^ M’,这是一个控制字符。
在命令行里也必须用^M控制字符耶!?

CODE:
[sam@chenwy sam]$ sed 's/##/ /g;s/^0*/ /g;s/^M/ /g' dos.txt
12332 DISO 45.12
332 LPSO 23.14
1299 USPD 34.46



CODE:
[sam@chenwy sam]$ cat dos.txt | sed 's/^0*/ /g' | sed 's/^M/ /g' | sed 's/##/ /g'


阅读(1717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~