您的位置 首页 linux常用命令

linux awk命令详解 (linux 三剑客之awk)

linux awk命令 可以说 处理文件内容使我们程序员的利器,也被称为三剑客 之首( awk , sed  ,grep) 当然也有 四剑客 美誉 (awk,sed, grep ,find)

上一篇介绍了  linuxsed命令  感兴趣的朋友可以去看看。

先说一下 linux  awk 的作用:

它可以按照 行 查找文件内容, 模糊过滤文件内容, 可以对文件内容取列, 还可以进行数值运算,字符创比对, 还支持 for 循环,while循环, if 判断, 属组, 格式化输出 

awk 其实 本名是 gawk, 原因是它是 GNU 项目中3个人一起写的, 这3个人的名字的首字母是a w k 。

先来看看知识点 

准备文件:

cat /etc/passwd |head >>1.txt

 1 awk 取行

awk 'NR==3' 1.txt

这里要说一下, NR  是 awk内置的变量, 用来存储每行的行号。

NR == 相等的行, != 不等于  >= , <= , > , <  这些运算符 都支持。

2 .awk 模糊过滤

awk '/root/' 1.txt

默认支持正则: (不像grep  还要grep -E 或者 egrep, sed -r)

awk '/root| bin/' 1.txt

awk '/^.*mail/' 1.txt

区间范围

awk '/root/,/mai/' 1.txt

3 linux awk 取列 

文件准备:

cat -n /etc/passwd |head >> 2.txt

awk '{print $1}' 2.txt

取第1列 , 默认是以 空格和TAB 来分割列的

 

 

在awk 中 {} 中的符号都是当做变量来用的。

awk可以指定任意字符串作为分割符
-F 指定分隔符

第一种写法: awk -F:

awk -F : '{print$1 }' 2.txt

以 : 为分隔符,然后打印第一列

第2种写法:

awk -F ':' '{print $1}' 2.txt

、第3种写法: 

awk -F '[:/]' '{print $1,$2,$3,$7}' 2.txt

 

4模式+ 动作

文件内容:

zsa 100 wx qq
lw 99 wx qq
lzy 101 wx qq
loz 50 wx qq
qqq 19 wx

可以复制到都3.txt 

awk 'NR==6{print $NF}' file   :  找到第6行的 末尾列

awk 'NR>3&&NR<6{print $1}' file  : 找到大于3 小于6 的行,然后输出他们的第一列
awk '/root/{print $2}' file  :找到含有root 的列,并打印第2列
awk '//,//{print $3}' file  :  区间查找

 

5.比较表达式 成立则输出 不成立不输出内容

awk -F: '$1=="root"' passwd
awk -F: '$1 ~ "^r"' passwd 了解
数字比较:
awk -F: '$3==0' passwd
awk -F: '$3>=100' passwd
awk -F: '$3<100&&$3>80' passwd|wc -l

看看自己掌握了多少知识?

linux awk 命令练习题

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章