Linux命令——awk的基本使用
1,简介
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
awk 其实不仅仅是工具软件,还是一种编程语言。
awk 是以文件的一行内容为处理单位的。awk读取一行内容,然后根据指定条件判断是否处理此行内容,若此行文本符合条件,则按照动作处理文本,否则跳过此行文本,读取下一行进行判断。
2,基本用法
condition:条件。若此行文本符合该条件,则按照 action 处理此行文本。不添加条件时则处理每一行文本;
action:动作。按照动作处理符合要求的内容。一般用于打印指定的内容信息;
注意下面的引号为英文的单引号
2.1 处理指定文件的内容
awk 'condition { action }' filename
2.2 处理某个命令的执行结果
command | awk ' condition { action }'
3,案例
F(指定字段分隔符)
默认使用空格作为分隔符
3.1 处理指定文件的内容
cat log.txt
2 this is a test |
3.1.1 每行按空格或TAB分割(默认情况),输出文本中的1、4项
awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
---------------------------------------------
3.1.2 格式化输出
awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
---------------------------------------------
3.1.3 指定其它符号分割
log.txt的内容如下:
#2,this,is,a,test
3 Are you like awk
awk -F, '{print $1,$2}' log.txt
---------------------------------------------
2 this
3 Are you like awk
---------------------------------------------
3.2 处理某个命令的执行结果
[root@localhost awk]# echo "aa bb cc dd ee ff" | awk '{print $1}'
aa
[root@localhost awk]# echo "aa bb l cc dd l ee ff" | awk -F 'l' '{print $1}'
aa bb
[root@localhost awk]# echo "aa bb cc : dd ee ff" | awk -F ':' '{print $1}'
aa bb cc