【Linux】awk 命令详解 01

版权声明:原创不易,未经作者允许请勿随意转载!因个人能力和精力有限,难免有疏漏和不足之处,欢迎指正,谢谢~ 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

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/84964980