awk之初认识


Linux文本处理三剑客

grepegrepfgrep:文本过滤器

sed:行编辑器

模式空间,保持空间

awk:报告生成器,格式化文本输出

 

AWK:三个人名子首字母缩写;功用:把文件中内容读入awk的内存中,一次处理一行,切割文本,按照字段分隔符把整行切成n个片段,赋值给位置变量,并且将他们保留下来引用。

 

GNU awk=gawk

 

基本用法:

gawk [options] 'program' file file.

program:PATTERN { ACTION STATEMENT }

由语句组成,语句分隔符是;分号

 

ACTION: print, printf


选项:gawk

-F

指明输入时使用字段分隔符

-v var=val

变量赋值




1awk的输出命令print

print item1item2.

要点:

1)各item间使用逗号分隔,而输出时则使用输出分隔符分隔;

2)输出的各item可以字符串或数值、当前记录的字段($n)、变量或awk的表达式;数值会被隐式转换为字符进行输出;

3print后面的item如果省略,相当于print$0;输出“空白”,使用print“”;

2、变量

2.1)内置变量

            

变量名

含义

举例

FS

input  field seperator,默认为空白字符;


RS

input  record separator,默认为换行符;


OFS

output field  seperator,默认为空白字符;


ORS

output record  separator,默认为换行符;


NF

number  of field in current record,当前行的字段数;

awk  '{print NF}' /etc/issue

NR

number of 行数,所有文件统一计数

awk  '{print NR}' /etc/issue /etc/fstab

FNR

行数,各文件分别计数


FILENAME

当前文件名


ARGC

命令行的参数个数

awk '{print ARGC}' /etc/issue

ARGV

数组,保存了命令行参数

awk '{print ARGV2' /etc/issue /etc/fstab

2.2)自定义变量

-v var=val

变量名区分字符大小写

定义变量的位置

1)可通过program中定义变量;

2)通过-v选项定义变量;

 

2.3printf命令

格式:printf formatitem1item2…

使用要点:

1format是必须的;

2)不会自定换行,需显示给定行分隔符;

3format中需要分别为后面的每个item指定一个格式符;

格式符:都以%开头,后跟一个字符


%c

显示字符的ASCII

awk 'BEGIN{printf "%c","a"}'

%d,%i

显示十进制整数

awk 'BEGIN{printf "%d\n",6}'

%e,%E

科学计数法显示数值

 

%f

显示浮点数

awk 'BEGIN{printf "%f\n",6}'

%g

以科学计数法格式或浮点数格式显示数值

 

awk 'BEGIN{prinft "%g\n",6239.618764}'

%%

显示%自身



修饰符:

#[.#]

第一个#指定显示宽度,例如%30s;第二个#表示小数点后的精度;

    •  

左对齐

+

显示数值符号

 


你可能感兴趣的:(linux,awk,文本处理,初认识)