51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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 命令练习题

赞(4)
未经允许不得转载:工具盒子 » linux awk命令详解 (linux 三剑客之awk)