– Start
Input
getline 读取下一行到 $0,同时设置 NF, NR, FNR
getline var 读取下一行到 var,同时设置 NR, FNR
getline <file 从文件 file中读取一行到 $0,同时设置 NF
getline var <file 从文件 file中读取一行到 var
command | getline [var] 从管道中读取一行到 $0 或 var
command |& getline [var] 从其他进程中读取一行到 $0 或 var
next 停止处理当前行,处理下一行,相当于 continue
nextfile 停止处理当前文件,处理下一文件,相当于 continue
Output
print 打印 $0
print expr-list 打印 expr-list
print expr-list >file 输出 expr-list到文件
print expr-list >> file 添加 expr-list到文件
print expr-list | command 输出到管道
print expr-list |& command 输出到其他进程
printf fmt, expr-list 格式化打印 expr-list
printf fmt, expr-list >file 格式化打印 expr-list到文件
system(cmd-line) 调用系统命令
fflush([file]) 刷新缓存
close(file [, how]) 关闭文件
/dev/stdin 标准输入
/dev/stdout 标准输出
/dev/stderr 标准错误输出
/dev/fd/n 文件描述符 n
下面我们看一个例子,假设有下面的文件 test.txt
test1
test2
inline test2.txt
test4
inline test3.txt
done
现在让你把包含 inline 的行替换成它后面文件中的内容,怎么办?
#! /usr/bin/awk -f
{
if($0~/inline/) {
fileName=substr($0, length("inline ") + 1);
while ((getline newLine <fileName) > 0) {
print newLine;
}
close(fileName);
} else {
print;
}
}
– 更多参见:awk 精萃
– 声 明:转载请注明出处
– Last Updated on 2015-10-28
– Written by ShangBo on 2015-10-28
– End