awk命令

awk [选项] '条件1{动作1} 条件2{动作2}...' 文件名

条件(Pattern)
*) 一般使用关系表达式作为条件
*) x>10 判断变量x是否大于10
*) x>=10 大于等于
*) x<=10 小于等于
动作(Action)
*)格式化输出
*)流程控制语句
awk 默认使用空格或制表符(Tab)作为分割符
awk 一次处理一行内容
awk 可以对每行进行切片处理 $awk '{printf $1}' 输出首个字段

awk的内置参数

$0
表示整个当前行
$1
表示每行第一个字段
$2
表示每行第二个字段
...

awk自定义分隔符

awk分隔符
使用-f进行设定
awk -F ':' '{print $3}' /etc/passwd  使用":"作为分割符
awk -F ':' '{print $1,$3}' /etc/passwd 多个字段之间用,分割
awk -F ':' '{print $1" "$3}' /etc/passwd 多个之间用空格分割

awk内置参数NR,NF,FILENAME

NR 每行记录号 行号
NF 每行字段数 列号
FILENAME 正在处理的文件名
[root@ssgao1987 ~]# ll | awk '{print NR,NF}'
1 2
2 9
3 9
[root@ssgao1987 ~]# ll | awk '{print FILENAME}'

awk 执行条件

awk [选项] '条件1{动作1} 条件2{动作2}...' 文件名
条件(Pattern)
*) 一般使用关系表达式作为条件
*) x>10 判断变量x是否大于10
*) x>=10 大于等于
*) x<=10 小于等于
动作(Action)
*)格式化输出
*)流程控制语句

awk条件使用逻辑判断式

~,!~ 匹配正则表达式
==,!=,<,>: 判断逻辑表达式
awk逻辑判断实例
[root@ssgao1987 ~]# ll
总用量 52
-rw-r--r--. 1 root root     0 7月  15 05:51 ls.log
drwxr-xr-x. 2 root root  4096 7月  19 08:27 redis
-rwxr--r--. 1 root root    86 7月  15 01:28 shell_01.sh
drwxr-xr-x. 2 root root  4096 7月  15 06:55 ssgao
[root@ssgao1987 ~]# ll | awk '$9~/ssgao/{print $9}' (条件判断式:$9~/ssgao/)
ssgao
[root@ssgao1987 ~]# ll | awk '$7>20 {print $0}'
-rw-r--r--. 1 root root   277 7月  30 17:11 df.log
-rw-r--r--. 1 root root   493 7月  30 17:28 eth0.log

awk扩展格式BEGIN,END

awk [options] 'condition {command}' file
扩展
BEGIN{print "begin"} pattern {commands} END {print "end"}
awk是读一行处理一行,处理是在commands中完成
BEGIN是在读行之前进行操作的,相当于初始化
END所有行执行后完成的
[root@ssgao1987 ~]# awk -F ":" 'BEGIN{print "LINE CLO USER"}{print NR" "NF" "$1}END{print"----"FILENAME"----"}' /etc/passwd
LINE CLO USER
1 7 root
2 7 bin
3 7 daemon
----/etc/passwd---- 求和运算
[root@ssgao1987 ~]# ll | awk 'BEGIN{size=0}{size+=$5}END{print "SIZE is:" size }'
SIZE is:28340 判断passwd文件中非空用户数
awk -F ":" 'BEGIN{count=0}$1!~/^$/{count++}END{print "count =" count}' passwd 判断passwd文件中UID大于100
awk -F ":" 'BEGIN{count=0}{if($3>100) name[count++]=$1}END{for (i=0;i<count;i++) print i,name[i]}' passwd

linux常用命令 awk命令的更多相关文章

  1. ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘

    本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...

  2. Linux 常用的压缩命令有 gzip 和 zip

    Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip ...

  3. Linux常用的基础命令总结

    man 查看英文命令帮助   可以看作--help 拷贝目录的命令cp -a  包含所有 ls -a 显示所有文件包括隐藏文件  -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...

  4. Linux三剑客之awk命令详解

    一.awk介绍 AWK是一种优良的文本处理工具.它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho .Pet ...

  5. LINUX常用配置及命令

    一.   Fedora系统配置 1.      [设置网卡IP] 步骤如下: 1)     用root用户登陆,打开/etc/sysconfig/network-scripts/ifcfg-eth0文 ...

  6. Linux学习之awk命令

    一. AWK 说明    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能 ...

  7. 【Linux基础】awk命令

    1.awk命令说明 (1)awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 (2)awk处理过程:  依次对每一行进行处理,然后输出 ...

  8. Java线上问题排查思路及Linux常用问题分析命令学习

    前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...

  9. Linux Shell编程 awk命令

    概述 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是l ...

随机推荐

  1. 打开visual studio 2010报错:未能正确加载“VSTS for Database Professionals Sql Server Data-tier Application”包

    1  解决: 运行cmd 2  输入:regsvr32 %windir%\system32\jscript.dll

  2. centos7 fortune+cowsay+lolcat美化初始终端

    前序 fortune+cowsay+lolcat效果图(每次打开新的终端的时候, 显示名言) fortune 提供我的rpm包, fortune+依赖 安装它们 rpm -ivh *.rpm 调配中文 ...

  3. es6中promise实现ajax的例子

    function getData(url){ var pro = new Promise(function(resolve,reject){ var xhr = null; try{ xhr = ne ...

  4. 顺手写一下HTTP协议

    本文目录 一 什么是HTTP协议 二 Http的特点 三 Http报文 回到目录 一 什么是HTTP协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写 ...

  5. java如何编写多线程

    1.如何实现多线程 1.1实现Runnable接口,实现run()方法. public class Main4 implements Runnable { public static void mai ...

  6. iP私网地址

    私网地址范围:A类10.0.0.0~255.255.255 B类172.16.0.0~172.31.255.255 C类192.168.0.0~192.168.255.255

  7. The application to execute does not exist: 'C:\Users\Administrator\.dotnet\tools\.store\dotnet-aspnet-codegenerator\2.2.0-rtm-35687\dotnet-aspnet-codegenerator\2.2.0-rtm-35687\tools\netcoreapp2.1\any\

    vs code mvc搭建基架执行命令操作出现的问题解决方式重新复制拷贝一份2.2.0命名为2.2.0-rtm-35687, 修改

  8. [ZOJ 4016] Mergable Stack

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4016 直接用栈爆内存,看网上大神用数组实现的,构思巧妙,学习了! ...

  9. 目标指定法——S.M.A.R.T.

    一个有效的目标一定要是 具体的(Specific), 可测量的(Measureable), 可实现的(Attainable), 有现实意义的(Realistic), 以及有明确期限的(Time-bas ...

  10. numpy计算结果的保存——ndarray格式数据保存

    1 Python保存numpy数据: numpy.savetxt("result.txt", numpy_data) 2 保存list数据: file = open('data.t ...