linux之awk命令
一、awk的内置参数
$0:表示整个当前行
$1:每行第一个字段
$2:每行第二个字段
$n:每行第n个字段
awk的参数:分隔符
-F separator 设定分隔符(默认为空格)
打印单个字段:
awk -F ':' '{print $3}' /etc/passwd
打印多个字段:
awk -F ':' '{print $1,$3}' /etc/passwd
awk -F ':' '{printf("User:%s UID:%s\n", $1,$3)}' /etc/passwd
awk -F ':' '{print "User:" $1 "\t"UID:"$3"}' /etc/passwd
NR:每行行号
NF:字段数量
awk -F ':' '{print NR,NF,FILENAME}' /ect/passwd
#案例:
1、显示/etc/passwd 中用户名ID大于100的行号和用户名
awk -F ":" '{if ($3>100) print NR,$1}' /etc/passwd
awk -F ":" '$3>100{print NR,$1}' /etc/passwd
2、在服务器的日志中找出IP:43.226.164.120 的访问日期。
sed -n '/43.226.164.120/p' assess_log | awk ' ' '{print substr($4,2)}'
awk '/43.226.164.120/{print substr($4,2)}' assess_log
二、awk的逻辑判断式:
- ~ 匹配正则表达式
- !~ 不匹配正则表达式
- ==等于
- !=不等于
- < 小于
- >大于
awk -F ':' '$1~/^m.*{print $1}' /etc/passwd 打印以m开头的用户名
awk -F ':' '$1!~/^m.*{print $1}' /etc/passwd 不打印以m开头的用户名
三、awk的扩展格式
command扩展
BEGIN{print "start"}pattern{awk命令}END{print "end"}
#案例:制表显示/etc/passwd 每行的行号,每行的列数,对应行的用户名
awk -F ':' 'BEGIN {"User Line Col"}{print $1,NR,NF}END{print "-------------"FILENAME"-------------"}' /etc/passwd
#案例:统计当前文件夹下的文件/文件夹占用的大小
ls -al | awk 'BEGIN{count=0}{count+=$5}END{print count}'
ls -al | awk 'BEGIN{count=0}{count+=$5}END{print count/1024/1024"M"}'
#统计显示/etc/passwd的账户总人数
awk -F ':' 'BEGIN{count=0}{count++}END{print count}' /etc/passwd
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print count}' /etc/passwd 排除空行
#统计显示/etc/passwd中UID中大于100的用户名
awk -F ':' '$3>100{print $1}' /etc/passwd
awk -F ':' 'BEGIN{count=0}$3>100{user[count++]=$1}END{for(i=0;i<count;i++) print i,user[i]}' /etc/passwd
#统计access_log日志中每个IP出现的次数
awk '{arr[$1]++}END{for(key in arr)print key,arr[key]}' access_log
awk和sed对比
1、awk和sed都可以处理文本
2、awk侧重于复杂逻辑处理
3、sed侧重于正则处理
4、awk和sed可以共同使用
面试问题
1、修改某个目录下所有包含AAA的文件的文件名 改为 aaa【改文件名】
find . -name "*aaa*" -exec rename aaa AAA { } \;
2、修改目录下所有的文件中,包含 aaa 都改成 AAA【改文件内容】
sed -i 's/AAA/aaa/g' `grep AAA -rl . ` 反引号
sed本身不改变文件内容,要使用-i,然后看下文件
linux之awk命令的更多相关文章
- linux中awk命令(最全面秒懂)
目录 一:linux中awk命令 1.awk命令简介 2.awk作用 3.awk的语法格式 4.解析awk使用方法 5.参数 6.awk的生命周期 二:awk中的预定义变量 三:awk运行处理规则的执 ...
- linux中awk命令详解(最全面秒懂)
一:linux中awk命令 1.awk命令简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinber ...
- linux的awk命令解读
转自:http://blog.csdn.net/guoer9973/article/details/44650729 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理 ...
- linux 常用awk命令
linux awk命令详解awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每 ...
- Linux系统——awk命令
awk命令不仅仅是Linux系统的命令,也是一种编程语言,用来处理数据和生成报告(Exel),处理的数据可以是一个或多个文件(标准输入和管道获取标准输入).可在命令行上编辑操作,也可以写成awk程序运 ...
- Linux的awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Linux之awk命令详解
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- linux下awk命令详解
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Linux学习awk命令
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- linux之awk命令获取最后一列
统计分析中经常用的awk命令,其中用的最多的还是切分 cat test | awk -F',' '{print $1,$2} 能够很好的将记录按照需要切分开, 但是如何获取最后一列呢? 可以使用aw ...
随机推荐
- bzoj 2151 种树 —— 思路+链表
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2151 先都放进堆里取最大的,但选了一个就不能选它两边的,所以可能不是最优,要有“反悔”的措施 ...
- C++实现O(1)时间内删除链表结点
/* * 删除链表节点.cpp * * Created on: 2018年4月13日 * Author: soyo */ #include<iostream> using namespac ...
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法Windows版(手贱强制重启电脑的后果)
转自:https://blog.csdn.net/rrrrroy_ha/article/details/80601497
- 6-11 SVM支持向量机2
SVM支持向量机的核:线性核.进行预测的时候我们需要把正负样本的数据装载在一起,同时我们label标签也要把正负样本的数据全部打上一个label. 第四步,开始训练和预测.ml(machine lea ...
- 【转】图像金字塔PyrDown,PyrUP
原文链接:http://blog.csdn.net/davebobo/article/details/51885043 [图像金字塔] 图像金字塔这个词,我们经常在很多地方可以看到.它是图像多尺度表达 ...
- 数据库MySQL技术-基础知识
数据库技术: SQL,关系数据库标准 注意: 环境编码: cmd客户端是固定的gbk编码 而php网页中,是该网页文件的编码(现在主流都是utf8). mysql> set names gb ...
- 【转】PL/SQL 使用技巧
ref:http://blog.chinaunix.net/uid-21592001-id-3082675.html [转]plsql developer 使用技巧 Oracle数据库相信已成为很多企 ...
- python 闭包 闭包与装饰器之间的关系
一.一个闭包的实际应用例子 def func(a, b): def inner(x): return a * x + b return inner inn = func(1, 1) print(inn ...
- P4171 [JSOI2010]满汉全席(2-SAT)
传送门 2-SAT裸题 把每一道菜拆成两个点分别表示用汉式或满式 连边可以参考板子->这里 然后最尴尬的是我没发现$n<=100$然后化成整数的时候只考虑了$s[1]$结果炸掉了2333 ...
- 第二类Stirling数初探 By cellur925
上午noi.ac崩崩崩了,栽在组合数学上,虽说最后在辰哥&Chemist的指导下A掉了此题,也发现自己组合数学太弱了qwq. 在luogu上找题,结果找到了一个第二类斯特林数的题(还是双倍经验 ...