截取每一行的第一个字段sed&awk?
时间:2010-04-20 来源:攀爬__蜗牛
#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 |
其中,?、+、*都是正则表达式。
?是指匹配0个或一个之前的字符;
+是指匹配一个或多个之前的字符;
*是指匹配0个或一个之前的字符;
**匹配一个或多个之前的字符,以此类推。
如果sed加了-r参数支持扩展的正则表达式,就不用在前面加\了。
总结两点:
一是要灵活应用多种工具;
二是要选取最合适的工具。
总之方法有多种,但是唯独awk最简单!