- 浏览: 1656237 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1600分屏启动Vim 使用大写 ... -
bash的几种for循环
2012-04-26 11:13 18561、罗列式 for VARIABLE in 1 2 3 ... -
【zz】几个简单选项让你的Readline(Bash)更好用
2011-10-10 23:08 2426Reddit上的一位仁兄贴出了他的readline手册学习成果 ... -
pipe in -exec
2011-09-27 22:35 1430一个简单的例子: 将一堆的.txt文件,合并成一个文件,让每个 ... -
[zz]Unix调试的瑞士军刀:lsof
2011-08-31 10:33 1505原文见:http://heikezhi.com/2011/06 ... -
[zz]关于xargs,你可能不知道的
2011-08-29 23:05 2480如果你曾经花了许多时间在Unix命令行上,那么或许你已经见过x ... -
使用scala.sys.process包和系统交互
2011-07-19 00:00 6498在Java中我们可以使用Runtime.getRuntime( ... -
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法
2011-06-23 22:17 14475在笔记本安装Ubuntu11.04增强功能失败 引用 fuli ... -
[zz]服务器性能评估
2011-04-29 14:17 4028工作这么久了,主 ... -
[zz]Top命令VIRT,RES,SHR,DATA的含义
2011-04-10 15:50 4130VIRT:virtual memory usage ... -
[zz]一些shell命令
2011-04-10 15:35 15111.显示消耗内存/CPU最多的10个进程 ps aux | ... -
Open VPN免密码配置
2011-03-03 22:55 3589公司VPN的帐号密码使用的是个超长的随机数,每次输入很麻烦,如 ... -
Linux下使用RTX腾讯通
2011-03-03 22:46 10790在公司为了使用RTX,专门安装了一个XP的虚拟机,但是这个也不 ... -
[zz]linux 常用命令总结:
2010-12-11 21:30 1694linux 常用命令总结: 一。 通用命令: 1. dat ... -
Ubuntu10.10解决Empathy无法链接MSN的问题
2010-10-21 16:36 37531.在Empathy中删除无法登录的MSN账户,并关闭Empa ... -
[zz]Vim的分屏功能
2010-10-21 13:09 1702分屏启动Vim 使用大写 ... -
Ubuntu10.10 64bit使用Eclipse插件subclipse问题
2010-10-20 20:32 1968升级到ubuntu10.10什么坑都碰到了,郁闷啊。发现sub ... -
scim输入法,Eclipse代码提示之后失去焦点的问题
2010-10-20 13:36 3092突然发现Eclipse,每次代码提示之后无法打字,感觉是文本域 ... -
Linux下使用谷歌输入法
2010-10-18 23:01 3141Linux的中文输入法一直太烂,scim终于出来对google ... -
Linux下的各种压缩文件
2010-08-29 21:33 1182一般自带归档tar,gzip,compress rar需要安 ...
相关推荐
AWK可以读取和写入文件,利用`getline`函数可以从其他文件中获取数据: ```awk getline var ``` 而`print`或`printf`可以将结果输出到文件: ```awk print > "output.txt" ``` **八、AWK脚本实例** 以下是一个...
书中详细介绍了内置函数,如printf和getline,以及如何使用print和next命令。同时,还讲解了如何处理文件和管道,与其他Unix工具结合使用,实现更强大的数据处理流程。 最后,书中提供了大量示例和实战练习,帮助...
输入分隔符可以自定义,多行记录的处理可以通过 `getline` 函数来实现。输出方面,AWK提供了 `print` 和 `printf` 语句,并能将输出重定向到文件或者管道。 ### AWK在数据处理中的应用 在数据转换和归约方面,AWK...
AWK可以使用`getline`命令从其他文件或管道中读取数据,以及使用`print`和`printf`进行复杂的输出格式化。 **一.12 AWK与SHELL SCRIPT混合编程** AWK脚本可以嵌入到shell脚本中,与其他Unix工具配合使用,实现更...
对于 Solaris 操作系统而言,推荐使用 **nawk**,因为它相比旧版的 awk 增加了许多重要的功能,如支持数学运算中的幂运算 `^`、函数 `getline` 和 `system` 等。 #### 三、awk的基本语法及内部变量 **awk** 的基本...
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** 是一种脚本语言,专门设计用于处理文本数据,尤其是格式化的数据(如CSV文件)。它最初由贝尔实验室的Alfred Aho、Peter Weinberger和Brian ...
2. `getline`从输入源读取一行,可用于读取外部文件或其他命令的输出。 通过学习和实践AWK,你可以高效地处理结构化文本,解决各种数据分析和文本处理问题。结合图解教程,理解并掌握AWK的用法将极大地提升你在...
**使用printf格式化输出、awk内置数值函数、随机数生成器、常用字符串函数、GAWK/NAWK的字符串函数、处理参数、OFMT、GAWK内置的环境变量、pgawk...输出摆脱语言依赖、双向管道、系统函数、时间函数、getline命令**...
### AWK 快速参考指南 #### 一、概述 AWK 是一款强大的文本处理工具,由 Alfred V. Aho、Peter J. Weinberger 和 Brian W. Kernighan 在 20 世纪 70 年代末共同开发。AWK 语言的主要功能在于能够方便地对数据进行...
9. **文件操作**:awk可以打开和读取多个文件,使用`getline`命令逐行读取,或者在`BEGINFILE`和`ENDFILE`规则中处理文件。 10. **自定义函数**:用户可以定义自己的函数,提高代码的复用性和可读性。 11. **模式...
例如,使用`getline`函数读取其他文件,或通过`print`将结果输出到文件。 ### 9. `gawk` 和 `nawk` `gawk`是GNU版本的`awk`,提供了更多的功能和扩展,如GNU特定的函数、自定义内存管理等。`nawk`(new awk)是另...
- **内置函数**:AWK提供了一系列内置函数来处理文本,如print、printf、getline等。 ### 示例说明 文档中提到了一些基本的使用示例和语法,这里简要介绍: - **关联数组**:在AWK中,关联数组可以使用字符串作为键...
- **从文件中读取变量到 AWK 中**:使用 getline 函数。 **示例**:在 AWK 中使用 Shell 定义的变量。 ```sh #!/bin/bash STR="hello" echo | awk -v str="$STR" '{ print str; }' ``` **示例**:在 AWK 中运行 ...
11. **GNU Awk特定特性**:GAWK提供了许多其他AWK实现不支持的扩展,如三元运算符、函数参数列表和`getline`从管道和命令读取。 12. **GNU Free Documentation License**:本书遵循GNU自由文档许可证,允许自由复制...
- 可以通过`<>`操作符直接读写文件,或者使用`getline`函数从其他文件读取内容。 9. **模式匹配** - 正则表达式是AWK的强大工具,允许复杂的数据匹配。 - 使用`~`和`!~`操作符进行正则匹配。 10. **数组处理** ...