awk:
分析文本数据; 它内置有变量,还可以自定义变量; 它支持数组; \
它支持循环和判断;
awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行 \
符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0 \
则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对 \
应的动作action。接着开始读入第二条记录······直到所有的记 \
录都读完,最后执行END操作。
格式:
awk '{pattern + action}' {filenames}
awk [-F re] [parameter...] ['program'] [-f 'programfile'] \
[in_file_list]
参数说明:
-F {spliter} : 指定分割符, 默认为空格
awk内置变量:
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
示例:
cat /etc/passwd | awk -F ':' 'BEGIN {print "name, shell"} \
{print $1","$7} END {print "blue, nosh"}'
last -n 5 | awk '{print $1}'
awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR \
",columns:" NF ",linecontent:"$0}'
awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s, \
linecontent:%s\n", FILENAME, NR, NF, $0)}' /etc/passwd
awk '{count; print $0;} END{print "user count is", count}' /etc/passwd
分析文本数据; 它内置有变量,还可以自定义变量; 它支持数组; \
它支持循环和判断;
awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行 \
符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0 \
则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对 \
应的动作action。接着开始读入第二条记录······直到所有的记 \
录都读完,最后执行END操作。
格式:
awk '{pattern + action}' {filenames}
awk [-F re] [parameter...] ['program'] [-f 'programfile'] \
[in_file_list]
参数说明:
-F {spliter} : 指定分割符, 默认为空格
awk内置变量:
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
示例:
cat /etc/passwd | awk -F ':' 'BEGIN {print "name, shell"} \
{print $1","$7} END {print "blue, nosh"}'
last -n 5 | awk '{print $1}'
awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR \
",columns:" NF ",linecontent:"$0}'
awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s, \
linecontent:%s\n", FILENAME, NR, NF, $0)}' /etc/passwd
awk '{count; print $0;} END{print "user count is", count}' /etc/passwd