- 浏览: 1636752 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (405)
- C/C++ (16)
- Linux (60)
- Algorithm (41)
- ACM (8)
- Ruby (39)
- Ruby on Rails (6)
- FP (2)
- Java SE (39)
- Java EE (6)
- Spring (11)
- Hibernate (1)
- Struts (1)
- Ajax (5)
- php (2)
- Data/Web Mining (20)
- Search Engine (19)
- NLP (2)
- Machine Learning (23)
- R (0)
- Database (10)
- Data Structure (6)
- Design Pattern (16)
- Hadoop (2)
- Browser (0)
- Firefox plugin/XPCOM (8)
- Eclise development (5)
- Architecture (1)
- Server (1)
- Cache (6)
- Code Generation (3)
- Open Source Tool (5)
- Develope Tools (5)
- 读书笔记 (7)
- 备忘 (4)
- 情感 (4)
- Others (20)
- python (0)
最新评论
-
532870393:
请问下,这本书是基于Hadoop1还是Hadoop2?
Hadoop in Action简单笔记(一) -
dongbiying:
不懂呀。。
十大常用数据结构 -
bing_it:
...
使用Spring MVC HandlerExceptionResolver处理异常 -
一别梦心:
按照上面的执行,文件确实是更新了,但是还是找不到kernel, ...
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法 -
dsjt:
楼主spring 什么版本,我的3.1 ,xml中配置 < ...
使用Spring MVC HandlerExceptionResolver处理异常
awk getline开始一直用做按行读取文件。
getline还有其他一些比较好用的功能,他可以集成shell命令,而不使用system就可以
做到:
比如想删除一个文件a里面按行存放的文件名得所有文件,那么在awk里面可以使用:
awk '{cmd="rm "$0|getline} a
下面是转自:http://bbs.chinaunix.net/thread-108596-1-1.html
的一些用法介绍:
1、getline用法简介:
getline 是awk里用于输入重定向的一个函数,他可以从标准输入/一个管道/文件读取输入, 而不只是从当前被处理的文件来处理, 他取得输入的下一行并给NF,NR,FNR等内制变量置值, 如果找到一条记录则getline返回1,如果到了文件结束(EOF)则返回0,如果错误则返回-1
man bash: search about getline
getline < file sets $0 to the next record from
file. getline x sets variable x instead.
...
In all cases, getline returns 1 for a
successful input, 0 for end of file, and -1 for an error.
awk的 getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录,那么getline将尤其有用。它完成一般字段的分离(设置字段变量$0 FNR NF NR)。如果成功则返回1,失败则返回0(到达文件尾)。如果需简单地读取一个文件,则可以编写以下代码:
例:示例getline的使用
{while(getline==1)
{
#process the inputted fields
}
}
也可以使getline保存输入数据在一个字段中,而不是通过使用getline variable的形式处理一般字段。当使用这种方式时,NF被置成0,FNR和NR被增值。
用户也可以使用getline<"filename"方式从一个给定的文件中输入数据,而不是从命令行所列内容输入数据。此时,getline将完成一般字段分离(设置字段变量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失败。用户可以从给定文件中读取数据到一个变量中,也可以用stdin(标准输入设备)或一个包含这个文件名的变量代替filename。值得注意的是当使用这种方式时不修改FNR和NR。
另一种使用getline语句的方法是从UNIX命令接受输入,例如下面的例子:
例:示例从UNIX命令接受输入
{while("who -u"|getline)
{
#process each line from the who command
}
}
当然,也可以使用如下形式:
"command" | getline variable
例如:
/home/lee#awk 'BEGIN{"date"|getline var;split(var,a);print a[4]}'
16:46:26
/home/lee#awk 'BEGIN{getline name<"/dev/tty";print "yourname:"name}'
lee
yourname:lee
getlin在不同环境下设置的值:
-------------------------------------------------
形式 设置
-------------------------------------------------
getline $0,NF,NR,FNR
getline var var,NR,FNR
getline<file $0,NF
getline var<file var
"cmd"|getline $0,NF
"cmd"|getline var var
==================================================================================
2、getline 用法举例:
#awk中getline获取shell命令的执行结果(不是返回值)
June@~ 21:34:59>
echo |awk '{"echo \"1 + 2\"|bc"|getline v;print v}'
3
June@~ 21:35:02>
注意:awk中使用管道调用shell命令结束后一定要close("cmd")
案例分析请见: http://hi.baidu.com/leejun_2005/blog/item/88f7b9838e794785f703a60b.html
通过在awk内使用管道,可以把shell命令的输出传送给awk
$ awk 'BEGIN{ "date" | getline date; print date; }'
Sun Mar 8 22:21:52 2009
#getline的状态返回值可以被赋值
awk '{if($6!~/6/){tmp=$0}if($6~/6/){c=getline s;if(c==0)s="";print tmp,$0,s}}' file
awk getline接收用户输入,有两种形式:
getline string < "/dev/tty"
getline string < "-"
1)提示用户输入参数getline:awk 'BEGIN{print "input sth";getline var <"-" ; print var}' # 其中 "-" 就是标准输入,很多工具都支持 "-" ,比如tar/cat等。
2)获取awk脚本的位置参数:awk 'BEGIN{print ARGV[1],ARGV[2]}' a b
getline怎样保存shell的全部输出:
awk 'BEGIN{srs=RS;RS="";"ls ./" | getline TMP;RS=srs;print TMP}'
getline直接读取文件,注意BEGIN是预处理部分,不是action部分,此时还没有准备处理文件,指针也没有指向文件第1行,在执行过程中也不会移动文件指针的。简单的说就是BEGIN部分awk是没有指针的,此时只有getline指针,awk只在 { } action部分有指针处理。
awk 'BEGIN{while (getline d<"aa") print d}'
seq 10|awk '{getline d<"aa";print d}' #如果getline直接读一个文件,那么就是逐行读取的,因为此时只有getline指针,而没有awk指针来处理该文件。
getline打印偶数行:
seq 10 | awk '{getline;print}' # 注意这个和 seq 10 | awk 'BEGIN{while(getline)print}' 有区别!
June@~ 23:07:23>
seq 10 | awk 'i++%2'
2
4
6
8
10
June@~ 23:07:27>
awk getline两行互换:
seq 10 | awk '{if(getline tmp)print tmp;print}' #一般就是判断getline的返回值 > 0 的
2
1
4
3
6
5
8
7
10
9
awk中通过system也可执行shell命令:system会返回状态码
awk 'BEGIN{ system("ls -l") }'
ps:system里面也可以利用awk的变量:system("echo ", $1)
getline还有其他一些比较好用的功能,他可以集成shell命令,而不使用system就可以
做到:
比如想删除一个文件a里面按行存放的文件名得所有文件,那么在awk里面可以使用:
awk '{cmd="rm "$0|getline} a
下面是转自:http://bbs.chinaunix.net/thread-108596-1-1.html
的一些用法介绍:
1、getline用法简介:
getline 是awk里用于输入重定向的一个函数,他可以从标准输入/一个管道/文件读取输入, 而不只是从当前被处理的文件来处理, 他取得输入的下一行并给NF,NR,FNR等内制变量置值, 如果找到一条记录则getline返回1,如果到了文件结束(EOF)则返回0,如果错误则返回-1
man bash: search about getline
getline < file sets $0 to the next record from
file. getline x sets variable x instead.
...
In all cases, getline returns 1 for a
successful input, 0 for end of file, and -1 for an error.
awk的 getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录,那么getline将尤其有用。它完成一般字段的分离(设置字段变量$0 FNR NF NR)。如果成功则返回1,失败则返回0(到达文件尾)。如果需简单地读取一个文件,则可以编写以下代码:
例:示例getline的使用
{while(getline==1)
{
#process the inputted fields
}
}
也可以使getline保存输入数据在一个字段中,而不是通过使用getline variable的形式处理一般字段。当使用这种方式时,NF被置成0,FNR和NR被增值。
用户也可以使用getline<"filename"方式从一个给定的文件中输入数据,而不是从命令行所列内容输入数据。此时,getline将完成一般字段分离(设置字段变量$0和NF)。如果文件不存在,返回-1,成功,返回1,返回0表示失败。用户可以从给定文件中读取数据到一个变量中,也可以用stdin(标准输入设备)或一个包含这个文件名的变量代替filename。值得注意的是当使用这种方式时不修改FNR和NR。
另一种使用getline语句的方法是从UNIX命令接受输入,例如下面的例子:
例:示例从UNIX命令接受输入
{while("who -u"|getline)
{
#process each line from the who command
}
}
当然,也可以使用如下形式:
"command" | getline variable
例如:
/home/lee#awk 'BEGIN{"date"|getline var;split(var,a);print a[4]}'
16:46:26
/home/lee#awk 'BEGIN{getline name<"/dev/tty";print "yourname:"name}'
lee
yourname:lee
getlin在不同环境下设置的值:
-------------------------------------------------
形式 设置
-------------------------------------------------
getline $0,NF,NR,FNR
getline var var,NR,FNR
getline<file $0,NF
getline var<file var
"cmd"|getline $0,NF
"cmd"|getline var var
==================================================================================
2、getline 用法举例:
#awk中getline获取shell命令的执行结果(不是返回值)
June@~ 21:34:59>
echo |awk '{"echo \"1 + 2\"|bc"|getline v;print v}'
3
June@~ 21:35:02>
注意:awk中使用管道调用shell命令结束后一定要close("cmd")
案例分析请见: http://hi.baidu.com/leejun_2005/blog/item/88f7b9838e794785f703a60b.html
通过在awk内使用管道,可以把shell命令的输出传送给awk
$ awk 'BEGIN{ "date" | getline date; print date; }'
Sun Mar 8 22:21:52 2009
#getline的状态返回值可以被赋值
awk '{if($6!~/6/){tmp=$0}if($6~/6/){c=getline s;if(c==0)s="";print tmp,$0,s}}' file
awk getline接收用户输入,有两种形式:
getline string < "/dev/tty"
getline string < "-"
1)提示用户输入参数getline:awk 'BEGIN{print "input sth";getline var <"-" ; print var}' # 其中 "-" 就是标准输入,很多工具都支持 "-" ,比如tar/cat等。
2)获取awk脚本的位置参数:awk 'BEGIN{print ARGV[1],ARGV[2]}' a b
getline怎样保存shell的全部输出:
awk 'BEGIN{srs=RS;RS="";"ls ./" | getline TMP;RS=srs;print TMP}'
getline直接读取文件,注意BEGIN是预处理部分,不是action部分,此时还没有准备处理文件,指针也没有指向文件第1行,在执行过程中也不会移动文件指针的。简单的说就是BEGIN部分awk是没有指针的,此时只有getline指针,awk只在 { } action部分有指针处理。
awk 'BEGIN{while (getline d<"aa") print d}'
seq 10|awk '{getline d<"aa";print d}' #如果getline直接读一个文件,那么就是逐行读取的,因为此时只有getline指针,而没有awk指针来处理该文件。
getline打印偶数行:
seq 10 | awk '{getline;print}' # 注意这个和 seq 10 | awk 'BEGIN{while(getline)print}' 有区别!
June@~ 23:07:23>
seq 10 | awk 'i++%2'
2
4
6
8
10
June@~ 23:07:27>
awk getline两行互换:
seq 10 | awk '{if(getline tmp)print tmp;print}' #一般就是判断getline的返回值 > 0 的
2
1
4
3
6
5
8
7
10
9
awk中通过system也可执行shell命令:system会返回状态码
awk 'BEGIN{ system("ls -l") }'
ps:system里面也可以利用awk的变量:system("echo ", $1)
发表评论
-
【zz】Vim的分屏
2012-04-26 11:13 1544分屏启动Vim 使用大写 ... -
bash的几种for循环
2012-04-26 11:13 17831、罗列式 for VARIABLE in 1 2 3 ... -
【zz】几个简单选项让你的Readline(Bash)更好用
2011-10-10 23:08 2376Reddit上的一位仁兄贴出了他的readline手册学习成果 ... -
pipe in -exec
2011-09-27 22:35 1387一个简单的例子: 将一堆的.txt文件,合并成一个文件,让每个 ... -
[zz]Unix调试的瑞士军刀:lsof
2011-08-31 10:33 1464原文见:http://heikezhi.com/2011/06 ... -
[zz]关于xargs,你可能不知道的
2011-08-29 23:05 2425如果你曾经花了许多时间在Unix命令行上,那么或许你已经见过x ... -
使用scala.sys.process包和系统交互
2011-07-19 00:00 6439在Java中我们可以使用Runtime.getRuntime( ... -
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法
2011-06-23 22:17 14399在笔记本安装Ubuntu11.04增强功能失败 引用 fuli ... -
[zz]服务器性能评估
2011-04-29 14:17 3986工作这么久了,主 ... -
[zz]Top命令VIRT,RES,SHR,DATA的含义
2011-04-10 15:50 4060VIRT:virtual memory usage ... -
[zz]一些shell命令
2011-04-10 15:35 14601.显示消耗内存/CPU最多的10个进程 ps aux | ... -
Open VPN免密码配置
2011-03-03 22:55 3589公司VPN的帐号密码使用的是个超长的随机数,每次输入很麻烦,如 ... -
Linux下使用RTX腾讯通
2011-03-03 22:46 10736在公司为了使用RTX,专门安装了一个XP的虚拟机,但是这个也不 ... -
[zz]linux 常用命令总结:
2010-12-11 21:30 1653linux 常用命令总结: 一。 通用命令: 1. dat ... -
Ubuntu10.10解决Empathy无法链接MSN的问题
2010-10-21 16:36 37131.在Empathy中删除无法登录的MSN账户,并关闭Empa ... -
[zz]Vim的分屏功能
2010-10-21 13:09 1640分屏启动Vim 使用大写 ... -
Ubuntu10.10 64bit使用Eclipse插件subclipse问题
2010-10-20 20:32 1930升级到ubuntu10.10什么坑都碰到了,郁闷啊。发现sub ... -
scim输入法,Eclipse代码提示之后失去焦点的问题
2010-10-20 13:36 3050突然发现Eclipse,每次代码提示之后无法打字,感觉是文本域 ... -
Linux下使用谷歌输入法
2010-10-18 23:01 3078Linux的中文输入法一直太烂,scim终于出来对google ... -
Linux下的各种压缩文件
2010-08-29 21:33 1147一般自带归档tar,gzip,compress rar需要安 ...
相关推荐
awk学习awk学习awk学习awk学习awk学习awk学习awk学习
awk用法小结 - - - by ruson 2006.4 NTU 1. awk非常适合于结构化的文本文件(行、列数据)复杂...Solaris下建议用nawk,因为旧awk有很多功能不支持,例如数学运算幂 ^ ,函数getline,system等。 总结的很有条理。
此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...
awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file
The Getline function The systime function The Strftime function User Defined Functions AWK patterns Formatting AWK programs Environment Variables ARGC - Number or arguments (NAWK/GAWK) ARGV - ...
学习和理解AWK的最佳书籍 一致这本书是学习awk的最好书籍,网上下不到的,国内也买不到。国家图书馆和北京大学图书馆都有。强烈建议所有想学awk的同志们阅读(会有很多awk语言之外的启迪) 偶然机会得到,不敢独享...
AWK 详细使用文档 AWK 详细使用文档 AWK 详细使用文档
awk参考资料, awk参考资料详情.
你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是...
因为遇到了awk问题,所以找到这个小结,共享一下
This book is about a set of oddly named UNIX utilities, sed and awk. These utilities have many things in common, including the use of regular expressions for pattern matching. Since pattern matching ...
awk 是一门编程语言,它的基本操作是在一组文件上查找模式,并在包含这些模式实例的那 些行或字段上进行指定的动作。awk 使得特定数据的选择和变换操作更易于表达
awk详解awk详解awk详解awk详解awk详解awk详解awk详解awk详解awk详解
awk的详细介绍,awk的使用介绍,awk的使用教程,awk的学习宝典
ass.awk工具用在数据库hang住时分析收集到的systemstate所用,可以清晰明了的查看systemstate中的信息; 命令简单: $ awk -f ass1033.awk [trace_name_file] 在系统hung的时候,systemstate基本等同于hanganalyze...
windows 下的awk 命令工具
精通awk命令 Unix awk使用手册.htm awk.pdf
你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是...
AWK中文帮助文档,包含awk详细讲解以及实例程序
$awk '/sun/{print}' mydoc 由于显示整个记录(全行)是awk的缺省动作,因此可以省略action项。 $awk '/sun/' mydoc 例:下面是一个较为复杂的匹配的示例: $awk '/[Ss]un/,/[Mm]oon/ {print}' myfile