awk起源:awk语句是70年代由BELL实验室三个研究人员开发出来的一套语言,awk的名字就是这三位研究人员的名字头字母。但是最初的awk并不是面向用户使用,而是商业化,面向个人使用,但awk依然是一套强大的语言。
90年代,GNU在awk基础上开发出完全开源版本,功能更加强大强大,甚至可以通过ftp来网络应用
awk语句是一种非常强大的语句,它的功能异常强大,甚至可以当作一门编程语言来使用,在以后会经常用到awk语句来处理字符。在shell脚本里,awk可以说是核心之一,因为刚接触awk语句,所以,先写下这篇初级awk语句的学习感受。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
awk使用格式:
awk [option] 'pattern {action}'
pattern : /regexp/ //正则表达式
exp //表达式
BEGIN
END
action : print //对文本切片,$1,....,$N
FS: //读入文件是以什么作为分割符,默认空格符
RS: // 换行符, /n
OFS //输出的段分隔符
ORS //输出的行一行间隔符
NF //一个行里切开有多少个断
NR //行号当前在第几个行
awk -F: //可以指定输入的时候分割符是“:”,也可以指定别的
举两个例子来显示awk语句的强大:
1.显示当前系统上所有其VSZ段的值大于4000的进程的进程名字、进程号和VSZ值的大小;
##将ps 进程信息交给awk命令来处理,默认以空格来作为分隔符,如果第5个字段的值大于4000,就显示第2 , 3,5个字段,并且交给grep来处理,打印出没有"PID"的项。
看到了吗,这条awk语句的pattern项,为一个表达式:$5>4000, 在awk里,pttern可是是正则表达式,表达式,用好这个条件,可以快速匹配出想要得到的文本,而不需要用grep或##者sed去抓取命令。而后面的$2,$5指的是第2,5个字段,\t是制表符。
2.显示linuxer1-linuxer20每个用户名及对应的UID号码和GID号码
##做这个练习前需先建立用户linuxer1-linuxer20
#BEGIN的用法:BEGIN{} {}指,在后面的命令执行前,先准备好BEGIN{}里的内容,即先执行BEGIN里的内容,后执行action,而END则恰好相反
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
until循环:until循环和while循环有一定的区别如下:
until CONDITION ; do
...
...
done
#当CONDITION为假时,进行循环,直到为真,这样就可以指定一个条件,如果符合这个条件则,一直循环下去,直到不符合这个条件为止。
写一个脚本:
查看redhat用户是否登录了系统,如果登录了,就通知当前脚本执行者“redhat is logged on.”;
否则,就睡眠5秒钟后再次进行测试;直到其登录为止退出;
要求:使用until循环
#sleep 5 睡眠5秒
#wall "" 向所有人通告“ ”
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test语句
脚本条件判断
test express
test 语句重要用于程序执行流或者其他可以附加条件的语句,成为他们的 condition, 这样丰富了脚本的灵活度。
它的格式:
[ expression ] //必须有空格,复制语法错误
[[ expression ]]
条件测试:
整数测试
-lt, [ $A -lt $B ] //A是否小于B
-le 小于或等于
-gt 大于
-ge 大于或等于
-nq 等于
-ne 不等于
字符串测试
== //等号左右要有空格 'w' 字符串用单引号,变量用“” == 两边有空格
!=
>
<
-z //判断一个字符串是否为空 空为真,不空位假 [ -z $A]
-n //与-z相反
文件测试
-e FILE //判断一个文件是否存在
-f //是否是普通文件
-d //是否是目录
-h/-L //判断是否是符号链接文件或软连接
-r //是否可读 当前用户
-w 可写 对当前用户
-x 执行 对当前用户来讲是否有可执行
-s //存在且大小不为0
-O //判断脚本的发起者是不是文件的属主
-G //是不是有效属组
例如上面例子里的until [ $WHO -eq 0 ]; -eq来测试是否等于0
分享到:
相关推荐
本文主要对linux-shell脚本命令中的awk命令进行简单介绍,希望对您有所帮助。
shell脚本学习资料 包括了比较常用的sed awk等命令
Linux运维-运维系统服务04-Shell脚本d7-Shell三剑客(下)-17awk结合循环语句使用
awk ‘{print NR}’ test1.sh|tail -n1 如图所示: 方法二 代码如下: awk ‘END{print NR}’ test1.sh 如图所示: 方法三 代码如下: grep -n “” test1.sh|awk -F: ‘{print ‘}|tail -n1 如图所示: 方法四 ...
Shell脚本专家指南.pdf sed与awk第二版.pdf shell十三问.pdf
我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...
shell从入门到应用,也包含AWK sed等操作,提供课件以及各种完整脚本以便学习。此课件视频来源于B站,链接为:https://www.bilibili.com/video/BV1st411N7WS?from=search&seid=5240570590491899209。
awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行扫描与处理。数据可 以来自标准输入、文件、管道。
当我还在学习shell脚本编程的时候,我会经常参考一些由别人编写出来的实例,以进一步地扩展自己的视野。而结果往往是我发现一些正在困扰着自己的问题,我的同事和朋友们却早已发明了又酷又聪明的解决方案。因此,我...
shell脚本修改json中某个字段的值 - 思路:通过awk来找到旧数据,然后用sed来替换旧数据
内容包括: 第一章:开始shell程序 第二章:命令的输出和输入 第三章:分支和循环语句 第四章:参数解析和扩充 第五章:参数、变量和函数 第六章:字符串、文件和命令 第七章:正则式、sed和awk 第八章:调试和debug...
GoAWK: 一个用Go编写的AWK解释器
初学者入门教程:Shell编程概述(一) 初学者入门教程:Shell编程概述(二) shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-...
本文档主要是讲解shell脚本文件中的awk,主要是讲解awk的详情分析,讲解awk的各种情况。各种指令
收集的awk脚本学习 快速入门 包含sed 和正则表达式 不好用 别下 我重新上传
awk学习awk学习awk学习awk学习awk学习awk学习awk学习
NULL 博文链接:https://ginge.iteye.com/blog/465063
Linux与unix shell编程指南.rar 第一部分 shell 第1章 文件安全与权限 1 第2章 使用find和xargs 14 第3章 后台执行命令 22 第4章 文件名置换 31 第5章 shell输入与输出 34 第6章 命令执行顺序 46 第二部分 文本过滤...
存活节点数与时间的关系仿真,此仿真是基于ns2的leach仿真的awk文件
shell-book::red_heart:Shell脚本学习系列教程:6小节内容轻松掌握shell编程