cat file01 abcd1234 bb334 ccddpp0098 a222 c how to split the file01 : abcd bb ccddpp a c awk 'BEGIN{"cat file01"| getline var;split(var,a, );print a[1]}' hehe, NO separator !
今天写一个小程序,统计一下一个文件中以'P'开头的行数。我用了两种方法,一种是使用sed,另一种是用c,使用了getline函数。这个函数的声明如下: #define _GNU_SOURCE #include stdio.h> ssize_t getline(char **lineptr, size_t *n, FILE *stream); 说明如下: getline() reads an entire line, storing the address of the buffer containing the text into *lineptr. The buffer is null-terminated ...
大家好: 我的脚本中有stdin,但它影响perl命令行用>输出。具体如下,我的脚本名是calculation.pl[code]#!/usr/bin/perl print "use dilution factor?[y/n] "; $answer = <stdin>; chomp $answer; if ($answer eq 'y'){$dil_fac = 10} elsif ($answer eq 'n'){$dil_fac = 1} else {print STDERR "use dilution factor? please notify by typing y or n"; exit} ... 脚本内容 ... [/code]但是,当我运行 perl calculation.pl > ou...
这是我在网上看到的一句话: “stdin stdout 和 stderr 关联的整数形式的文件描述符分别是 0,1 还有 2。预处理器符号 stdin_FILENO,STDOUT_FILENO 和 STDERR_FILENO 分别以它们为值” 我在程序中,用0替代stdin_FILENO是可以的,但用0替代stdin 就不行了,程序segmentation Fault (core dumped) 请教???
[root@localhost ~]# cat b Name Age Height Weight anger 18 173 74 liusan 20 177 80 aojun 24 167 49 tianjing 30 179 75 haobo 28 171 65 有个文本b 我想打印包含Name这行的下一行 只有一行 用下面个脚本和我预期不一样,求解 #!/bin/awk $1 ~ /Name/ { getline print $0} 实际结果 [root@localhost ~]# awk -f a b Name Age Height Weight anger ...
如题,getline可以获取命令行执行结果,如:[code]awk 'BEGIN { "echo abc"|getline a1; "echo def"|getline a2; "echo 123"|getline a3; printf "a1=[%s] a2=[%s] a3=[%s]\n",a1,a2,a3;}'[/code]结果:[code]a1=[abc] a2=[def] a3=[123][/code]但是如果其中任意两次命令一样,则getline无法获取结果:[code]awk 'BEGIN { "echo abc"|getline a1; "echo def"|getline a2; "echo abc"|getline a3; printf "a1=[%s] a2=[%s] a3=[%s]\...
本帖最后由 jiajuzh 于 2010-11-30 10:46 编辑 数据如下 aaa 1 2 3 4 5 6 bbb aaa 1 2 3 4 5 7 bbb aaa 1 2 3 4 5 6 ccc 1 2 3 4 5 6 处理规则:如果第六列为6,则打印此行及此行相临的上下一行;awk实现方法如下 awk '{if($6!~/6/){tmp=$0}if($6~/6/){getline s;print tmp,$0,s}}' 思路为:如果第六列不匹配6保存为tmp,如果匹配读取下一行,并打印tmp,当前行及下一行 但是这样设计存在一个问题,就是如果当前行的第6列...
$:cat test1,输出如下: abc xyz 123 dir cd 然后我就 cat test1 | awk '{ getline ; print }',输出如下: xyz dir cd 不明白为什么省略了 abc和123 ,高人来
输入awk -f exchange.awk temp.dat #exchange.awk: { if ((getline tmp) > 0) { print tmp print $0 } else print $0 } #temp.dat: wan tew free phore 期望输出: tew wan phore free 实际输出: tew phore 输出的是偶数行,相当于做了两次next,请大家帮忙看看,谢过了先!
#include