Linux / UNIX Awk命令教程和示例

AWK代表“温伯格克尼根

Awk是一个 脚本语言 用于处理或 分析文本文件。 或者我们可以说awk主要用于基于a 栏位或栏位 ,或 列集。 主要用于以有用的方式报告数据。 它还使用开始和结束块来处理数据。

awk的语法:

#awk’pattern {action}’输入文件>输出文件

让我们输入一个包含以下数据的文件

$ cat awk_file Name,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000

示例:1打印文件中的所有行。

默认情况下,awk打印文件的所有行,因此要使用上述命令打印上面创建的文件的每一行:

[email protected]:〜$ awk'{print;}’awk_fileName,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000 Ram,400,1000

示例:2仅打印特定字段,例如第二和第三。

[email protected]:〜$ awk -F“,”'{print $ 2,$ 3;}’awk_fileMarks最大标记数200 1000 500 1000 1000 800 800 1000 600 1000 400 1000

在上面的命令中,我们使用了选项 -F ”,” 它指定逗号(,)为 场分隔符 在文件中

示例:3打印与图案匹配的线条

我想打印包含单词“ Hari&Ram”的行

[email protected]:〜$ awk’/ Hari | Ram /’awk_fileRam,200,1000 Hari,600,1000 Ram,400,1000

示例:4如何在名称的第一列中找到唯一值

[email protected]:〜$ awk -F,'{a[$1];} END {for(i in a print i;})’awk_fileAbharam Hari名字Ghyansham Ram Shyam

示例:5如何查找特定列中的数据输入总和。

Synatx:awk -F,’$ 1 ==” Item1”{x + = $ 2;} END {print x}’awk_file

[email protected]:〜$ awk -F,’$ 1 ==” Ram” {x + = $ 2;} END {print x}’awk_file600

示例:6如何查找一列中所有数字的总数

例如,我们采用第二列和第三列。

[email protected]:〜$ awk -F“,”'{x + = $ 2} END {print x}’awk_file3500[email protected]:〜$ awk -F“,”'{x + = $ 3} END {print x}’awk_file5000

示例:7如何查找单个组记录的总和。

例如,如果我们考虑第一列,则可以根据项目对第一列求和

[email protected]:〜$ awk -F,'{a[$1]+ = $ 2;} END {for(i in a)print i”,“ a[i];}’awk_fileAbharam,800 Hari,600 Name,0 Ghyansham,1000 Ram,600 Shyam,500

示例:8如何找到第二列中所有条目的总和,并将其附加到文件末尾。

[email protected]:〜$ awk -F“,”'{x + = $ 2; y + = $ 3; print} END {print“ Total,” x,y}’awk_fileName,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham ,1000艾伯兰(Abharam),800,1000 Hari,600,1000 Ram(400),400,1000 Total(3500)

示例:9如何基于第一列查找每一列的条目数:

[email protected]:〜$ awk -F,'{a[$1]++;} END {for(i in a)print i,a[i];}’awk_fileAbharam 1 Hari 1 Name 1 Ghyansham 1 Ram 2 Shyam 1

示例:10如何仅打印每个组的第一条记录:

[email protected]:〜$ awk -F,’!a[$1]++’awk_fileName,Marks,Max Marks Ram,200,1000 Shyam,500,1000 Ghyansham,1000 Abharam,800,1000 Hari,600,1000

AWK开始块

BEGIN块的语法是

#awk’BEGIN {awk初始化代码} {实际AWK代码}’filename.txt

让我们创建一个包含以下内容的数据文件

awk的数据文件

示例:11如何填充每个列名称及其对应的数据。

[email protected]:〜$ awk’BEGIN {print“ Names ttotal tPPT tDoc txls”} {printf“%-s t%d t%d t%d t%d n”,$ 1,$ 2, $ 3,$ 4,$ 5}’数据文件

awk开始

示例:12如何更改场分隔符

如我们所见 空间 是个 场分隔符 在数据文件中,在下面的示例中,我们将字段分隔符从空格更改为“ |”

[email protected]:〜$ awk’BEGIN {OFS =” |“} {打印$ 1,$ 2,$ 3,$ 4,$ 5}’数据文件

awk字段分隔符

Sidebar