编程四剑客awk
awk 'pattern +{action}' file
(1)AWK基本语法参数详解
a:单引号 ''是为了和shell命令区分开;
b:大括号{}表示一个命令分组;
c:pattern 是一个过滤器,表示匹配pattern条件的行才进行Action处理;
d:action是处理动作,常见动作为print;
e:使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
FS 分隔符,默认是空格;
OFS 输出分隔符;
NR 当前行数,从1开始;
NF 当前记录字符个数;
$0 当前记录;
$1~$n 当前记录第n个字段(列);
(3)AWK内置函数详解:
gsub(r,s):在$0中用s代替r;
index(s,t):返回s中t的第一个位置;
length(s):s的长度;
match (s,r):s是否匹配r;
split(s,a,fs):在fs上将s分成序列a;
substr(s,p):返回s从p开始的子串;
(4) AWK常用操作符,运算符及判断符:
++ -- 增加与减少( 前置或后置);
^ ** 指数( 右结合性);
! + - 非、一元(unary) 加号、一元减号;
+ - * / % 加、减、乘、除、余数;
<<= == != >>= 数字比较;
&& 逻辑and;
|| 逻辑or;
= += -= *= /= %= ^= **= 赋值。
(5)AWK与流程控制语句:
if(condition) { } else { };
while { };
do{ }while(condition);
for(init;condition;step){ };
break/continue
常用工具演练:
(1) AWK打印硬盘设备名称,默认以空格为分割:
df -h|awk '{print $1}'
(2) AWK以空格、冒号、\t、分号为分割:
awk -F'[:\t;]' '{print $1}' list.txt
(3) AWK以冒号分割,打印第一列,同时将内容追加到/tmp/awk.log下:
awk -F: '{print $1>>"/tmp/awk.log"}' list.txt
(4) 打印list.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域:
awk 'NR==3,NR==5 {print $0}' list.txt
(5) 打印l;ist.txt文件中的第3行至第5行的第一列与最后一列:
awk 'NR==3,NR==5 {print $1,$NF}' list.txt
(6) 打印/etc/passwd文件中,长度大于80的行号:
awk 'length($0)>80 {print NR}' /etc/passwd
(7) AWK引用Shell变量,使用-v或者双引号+单引号即可:
awk -v STR=hello '{print STR,$NF}' list.txt
STR="hello";echo| awk '{print "'${STR}'";}'
(8) AWK以冒号切割,打印第一列同时只显示前5行:
cat /etc/passwd/head-5|awk -F: '{print $1}
awk -F: 'NR>=1&&NR<=5{print $1}' /etc/passwd
(9) Awk指定文件list.txt第一列的总和
cat list.txt|awk '{sum+=$1}END{print $sum}'
(10) AWK NR行号除以2余数为0则跳过该行,继续执行下一行,打印在屏幕:
awk -F: 'NR%2==0 {next}{print NR,$1}' /etc/passwd
(11) AWK添加自定义字符
ifconfig eth0|grep"Bcast"|awk'{print "ip_"$2}'
(12) AWK与if组合实战,判断数字比较:
echo 3 2 1 | awk '{ if(($1>$2)||($1>$3)) { print $2} else {print $1} }'
(13) AWK与数组组合实战,统计passwd文件用户数:
awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd
(14) awk分析Nginx访问日志的状态码404、502等错误信息页面,统计次数大于20的IP地址。
awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr |awk '{if($1>20) print $2}'
(15) Awk统计服务器状态连接数:
netstat -an | awk '/tcp/ {s[$NF]++} END {for(a in s) {print a,s[a]}}'
netstat -an | awk '/tcp/ {print $NF}' | sort | uniq -c
获取IP地址:
ifconfig|awk '/cast/' |awk '{print $2}' |sed 's/add://g'
ifconfig|awk '/cast/'|awk '{print $2}' |awk -F: '{print $NF}'
显示用户名
awk -F: '{print $1}' passwd
打印第三行到第六行并显示行号
awk 'NR>=3&&NR<=6 {print NR,$0}' passwd
打印硬盘分区
df -h|awk 'NR>1 {print $NF,(NF-1)}'
awk '{print $0}' list.txt'|sed 's/ /\n/g'|grep -v "^$"
数字列表取最大最小值
awk '{print $0}' list.txt|sed 's/ /\ng'|awk "! ^$"|sort -nr|sed -n "1p;\$p"
打印第一列和最后一列
df -h|awk '{print $1"\t"$NF}'
编程四剑客awk的更多相关文章
- shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...
- Shell编程四剑客包括:find、sed、grep、awk
一.Shell编程四剑客之Find Find工具主要用于操作系统文件.目录的查找,其语法参数格式为: find path -option [ -print ] [ -exec -ok command ...
- 简单介绍shell编程四剑客之awk
概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...
- 简单介绍shell编程四剑客之grep
概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...
- 简单介绍shell编程四剑客之sed
概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...
- 编程四剑客sed-2019.2.20
sed [-Options] [‘Commands’] filename; sed工具默认处理文本,文本内容输出屏幕已经修改,但是文件内容其实没有修改,需要加-i参数即对文件彻底修 ...
- linux四剑客-grep/find/sed/awk/详解-技术流ken
四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...
- Linux 命令之 linux 四剑客
Linux命令-- 四剑客 一:Linux命令 之 AWK 符号:^ 开头 $ 结尾 awk 是一种处理文本的语言,一个强大的文本分析命令! 1:提取文件中的每行的第二个 提取前文本中内容为 命令: ...
- python 函数“四剑客”的使用和介绍
python函数四剑客:lambda.map.filter和reduce. 一.lambda(匿名函数) 1. 学习lambda要注意一下几点: lambda语句被用来创建新的函数对象,并且在运行的时 ...
随机推荐
- JavaWeb项目中web.xml有关servlet的基本配置
JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...
- CS229 6.8 Neurons Networks implements of PCA ZCA and whitening
PCA 给定一组二维数据,每列十一组样本,共45个样本点 -6.7644914e-01 -6.3089308e-01 -4.8915202e-01 ... -4.4722050e-01 -7.4 ...
- android开发 写一个自定义形状的按键
步骤: 1.在drawable 文件夹中创建一个xml布局文件. 2.修改布局文件 3.在需要使用背景的按键中导入布局. 创建布局文件: 修改布局文件: <?xml version=" ...
- pyautogui控制鼠标键盘自动填写数据
import os import pyautogui import time, os import pyperclip # 复制 pyautogui.FAILSAFE = False class Au ...
- python-设计模式:抽象类
抽象类:用来分离主体框架和局部实现,或将共用和定制解藕.从抽象类继承必须实现所有层级未被实现的抽象方法(被装饰器abstractmethod装饰的方法),否则无法创建实例. 定义抽象类,必须继承ABC ...
- Ubuntu 14.04 配置OpenCv 2.4.9
安装工具 g++ 链接:http://www.cnblogs.com/LQLin168/p/6844593.html 下载OpenCv 2.4.9(官网地址):http://opencv.org/ ...
- pyqt 8行内就可以跑一个浏览器
pyqt 8行内就可以跑一个浏览器 from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * ...
- mapPartitions
mapPartitions操作与 map类似,只不过映射的参数由RDD中的每一个元素变成了RDD中每一个分区的迭代器,如果映射过程需要频繁创建额外的对象,使用mapPartitions操作要比map操 ...
- 关于Linux(时间网路同步)
Linux 时间同步只针对命令行界面,图形界面请自行摸索. 转自Linux下ntpdate时间同步
- 机器学习进阶-图像形态学操作-开运算与闭运算 1.cv2.morphologyEx(进行各类形态学变化) 2.op=cv2.MORPH_OPEN(先腐蚀后膨胀) 3.op=cv2.MORPH_CLOSE(先膨胀后腐蚀)
1.cv2.morphologyEx(src, op, kernel) 进行各类形态学的变化 参数说明:src传入的图片,op进行变化的方式, kernel表示方框的大小 2.op = cv2.MO ...