awk 基础入门:
一,awk,不仅仅是linux系统中的一个命令。而且是一种编程语言。可以用来处理数据和生成报告(excel表)。
二,处理的数据可以是一个或者多个文件,可以是来自标准输入。也可以通过管道符输入,awk可以在命令行上直接编辑命令进行操作。也可以编写成awk程序来进行更为复杂的运用。
三,#awk –version 查看awk版本。
四,最基础用法; 01
1,如图yunjisuan.txt文件中,awk的用法。
(1):# awk '' yunjisuan.txt 单引号里是条件 后边是用户名
(2):#awk '{print $1}' yunjisuan.txt 显示第一列
(3):#awk '{print $2}' yunjisuan.txt 显示第二列
2,如图
(1):# awk -F ":" '{print $1}' yunjisuan.txt 以":" 为分隔符查看分隔后的第一列。
(2):# awk -F ":" '{print $2}' yunjisuan.txt以":" 为分隔符查看分隔后的第二列。
3,如图
(1):# awk -F ":" 'NR==3' yunjisuan.txt 以":" 找出文件内容第三行
(2):# awk -F ":" 'NR >3 && NR <8' yunjisuan.txt 以":" 找出文件大于第三行到小于第八行内容。
4,如图
(1):# awk -F ":" 'NR >3 && NR <8 {print $1}' yunjisuan.txt 以":" 找出文件大于第三行到小于第八行内容中,以分隔符“:”分隔的第一列内容。
-F “:”以冒号为分隔符分隔
'NR >3 && NR <8' 为模式
{print $1} 大括号中的为动作。
*先模式后动作。先分行后分列。
5,如图
(1)# ifconfig eth0 | awk 'NR==2' | awk -F " " '{print $1}' 以空格为分隔符 找出第二行第一列。
(2)# ifconfig eth0 | awk 'NR==2' | awk -F " " '{print $2}' 以空格为分隔符 找出第二行第二列。
(3)# ifconfig eth0 | awk 'NR==2' | awk -F "[:/]+ " '{print $2}' 以正则[:/]号里任意字符为分隔符 找出第二行第二列内容。
6,如图
(1)# ifconfig eth0 | awk 'NR==1' | awk -F "[:/]+ " '{print NR,$1}'
以正则[:/]号里任意字符为分隔符 找出第一行第一列内容并且带行号。
五,最基础用法; 02
1,多个模式和动作
如图
(1)#awk –F: ‘NR==1 {print NR,$1} NR==2 {print NR,snf}’ yunjisuan.txt找到第一行第一列和第二行和他的最后一列并带行号 $NF最后一行。
2, (1) awd –F 参数 'BEGIN{} 模式 {动作} END{}
开始模块 BEGIN 告诉awd如何读数据
结束模块 END 告诉awd程序要如何结束
(2)NR这个符号其实真正的含义不是行号,而是数据被awk读取一段时间后NR就会记录一次。由于awk默认以\n作为每次读数据的结束标志,因此NR就恰好等于行号。 我们可以BEGIN模块,在awk读取数据之前设定他的读取换行符是谁。
默认awk读入换行符和输出换行符都是\n.
(3) 如图
(1)‘BEGIN{}’默认以\n为换行符。
(2) ‘BEGIN{RS= “:”}’ RS修改默认的读入换行符,换成:冒号
(4)如图
‘BEGIN{RS= “:”;ORS=”|”}’把:冒号的位置都换成“|”管道符。
NR,是显示行号。
3,sort , uniq
如图
(1) :sort 排序 加三个参数 sort 按26个字母顺序排序
sort –n 按照数字顺序排序
sort –rn 是逆转排序,让数字到这数
sort –k2 是按第二列排序
(2):uniq -c 是指,去重复的同时还计数。
(3):xargs 加 –n1 是指每行一个元素
2018年10月28号 晚