欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

awk的总结

程序员文章站 2022-03-12 08:38:33
入门总结 Awk简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告。处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。 ※查看awk的版本 ......

入门总结

awk简介

awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据生成报告。处理的数据可以是一个多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。

查看awk的版本

awk --version

 

单引号‘{  }{ }外面是模式(条件) 你想要干什么,相当于筛选 ,或者过滤

类似于sed命令

单引号{  }里面是动作先执行模式,后执行动作

 

awk格式

先进行冒号的切割成一列一列的,然后在进行条件,相当于是筛选;筛选到第四行的时候匹配到了条件,然后在从第三行到第八行里面进行动作动作为$1时候,显示4,5,6,7行的第1列内容

 

参数-f

awk 有参数-f 可以指定awk按照什么符号切割文件内容,资源文件内容切割成一列一列的

awk 不指定-f参数,awk默认按照空格进行文本的切割。{  }中的print代表输出的意思

$代表取列  $1就是取第一列,以此类推

 

以:号作为列 ,然后输出第七列的内容

 

输出第一列内容

 

 

 

 

默认以空格当列,因为文件里面没有空格符号,所以没有第二列内容

 

$0:默认输出全部内容

 

nf:默认取每行的最后一组的元素,

 

“[   ]”中括号里面是正则 可以多用符号

+号:贪婪模式能匹配多就不匹配少

 

 

 

 

 

awk –f 参数 ‘begin(开始模块){}模式 {动作}end(结束模块){}’

begin开始模块:告诉awk数据要如何读

通过-f我们可以指定分隔符

我们都知道换行符是 \n

nr这个符号其实真正的含义不是行号。而是数据被读取一段以后,nr就会记录一次。由于awk默认以\n作为每次读数据的结束标志;因此nr就恰好等于行号了。

 

假如我们修改awk默认的读数据的时候的默认换行符=== > 读入换行符

 

我们可以通过begin模块,在awk读取数据之前设定他的读入换行符是谁

 

默认awk读入换行符合输出换行符都是\n

 

修改读入换行符

应为我们设定了读入换行符rs=“:”

因此,在awk的内存里的数据是按照如下排列

1 root  2x  3 0  4 0  5 root  6 /root  7/bin/bash\nbin   8 x  9 1  10 1 

 

由于awk默认输出换行符是\n,因此在输出的时候awk会在内存的行的每行结尾附加输出换行符号\n,因此输出是效果如下:

1 root  2 x  3 0  4 0   5 root  6 /root  7 bin/bash  bin  8 x  91   10 1

输入换行符

 

※nr:代表的是记录符,记录偶从那个行,他是个变量值(相当于读了多少行)

begin模块 开头输入一次  模式{动作} 有几行就是几次  end 模块 结尾输入一次

 

输出换行符

 

end结束模块 :告诉awk程序要如何结束

begin模块 开头输入一次  模式{动作} 有几行就是几次  end 模块 结尾输入一次

 

 

 

让echo –e  处理内容里面的换行符\n

 

 

 

面试题:按单词出现频率降序排序(计算机文件中每个单词的重复数量)

注:此处用sort与uniq

sort :排序 按着26字符默认排序

sort  -n 按照数字排序

sort  -r 逆转排序

sort   -k* 指定第几列排序

 

uniq :去除重复的

uniq –c 去除重复的同时,显示次数

排序

 

 

 

tr:替换命令