版权声明:原创不易,未经作者允许请勿随意转载!因个人能力和精力有限,难免有疏漏和不足之处,欢迎指正,谢谢~ https://blog.csdn.net/lijing742180/article/details/84964980
文章目录
一、awk 介绍
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。
awk 功能非常强大,几乎相当于一门编程语言了,要学习的内容也非常多,本文先从最简单最常用的部分开始说起。
二、语法格式
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
选项 | 第二种写法 | 参数说明 |
---|---|---|
-F ‘fs’ | -F 相当于内置变量 FS,即 field-separator | -F 指定文件的分隔符,fs是一个字符串或者正则表达式,可以加引号也可以不加(最好加上单引号); 默认不带 -F 参数时,使用空格或制表符等空白字符做为分隔符。 |
-v var=value | –asign var=value | 赋值一个用户定义变量 |
-f scripfile | –file scriptfile | 从脚本文件中读取awk命令 |
三、基本用法
log.txt文本内容如下:
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
实例:
1、每行按空格或TAB分割,并输出文本中的第1、4项
$ awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
2、格式化输出
$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
3、awk -F 指定分割字符
3.1 使用 ,
分割
- -F 和分隔符之间可以有空格也可以没有,分隔符可以加单引号或双引号,也可以不加。
- 建议最好是 -F 和分隔符之间有一个空格,并给分隔符加单引号,不容易出错。
# 文本中没有分隔符字符,所以 $1 就是全部文本,$2 是空。
$ awk -F ',' '{print $1,$2}' log.txt
---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple
3.2 使用 a
分割
$ awk -F 'a' '{print $1}' log.txt
---------------------------------------------
2 this is
3 Are you like
This's
10 There
3.3 使用多个分隔符
先使用空格分割,然后对分割结果再使用","分割
$ awk -F '[ ,]' '{print $1,$2,$5}' log.txt
---------------------------------------------
2 this test
3 Are awk
This's a
10 There apple
4、awk -v 设置变量
常用语法:
awk -v var=value '{print $1,$2}' filename
4.1 定义一个变量,并在输出时对变量进行运算
数字与数字运算,结果正常;
数字与字符串运算,只保留数字。
$ awk -va=1 '{print $1,$1+a}' log.txt
---------------------------------------------
2 3
3 4
This's 1
10 11
4.2 定义多个变量,并在输出时对变量进行运算
数字与数字运算,结果正常;
数字与字符运算,只保留数字;
字符或数字与字符拼接;
$ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
-----------------------------------------------
2 3 2s
3 4 3s
This's 1 This'ss
10 11 10s
5、awk -f 指定脚本
常用语法:
awk -f {awk脚本} {文件名}
$ awk -f cal.awk log.txt