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
看看自己掌握了多少知识?
欢迎来撩 : 汇总all