Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49392
  • 博文数量: 10
  • 博客积分: 1480
  • 博客等级: 上尉
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 17:31
文章分类
文章存档

2010年(10)

我的朋友

分类:

2010-04-20 14:28:17

 

#cat a.test

 b.txt  5435

 c.txt  3397

 d.txt  1600


现在要截取文件a.test的每一行的第一个字段:

 

awk '{print $1}' a.test

 

cut  -d' '  -f1  a.test


 

sed 's/^[ \t]*\([^ \t]*\).*$/\1/' a.test


sed 's/^[ \t]\+//;s/[ \t].*//' a.test

sed 's/^[ \t]\?//;s/[ \t].*//' a.test

sed   -r 's/^[ \t]+//;s/[ \t].*//' a.test

 

sed  -r 's/^[ \t]?//;s/[ \t].*//' a.test

 

输出结果为:

b.txt

c.txt

d.txt 

 

其中,?、+、*都是正则表达式。

?是指匹配0个或一个之前的字符;

+是指匹配一个或多个之前的字符;

*是指匹配0个或一个之前的字符;

**匹配一个或多个之前的字符,以此类推。

如果sed加了-r参数支持扩展的正则表达式,就不用在前面加\了。

 

总结两点:

    一是要灵活应用多种工具;
   

    二是要选取最合适的工具。


 

总之方法有多种,但是唯独awk最简单!


 

阅读(3149) | 评论(0) | 转发(0) |
0

上一篇:$()、${}等等

下一篇:没有了

给主人留下些什么吧!~~