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
分享到:
相关推荐
awk命令常用于在Linux shell脚本中进行数据提取、文本转换、数据报告生成等操作。本文将对awk命令的基本知识进行介绍,包括其工作原理、参数说明、内置变量、内置函数和使用示例。 首先,awk的工作流程可以从读取...
4. **循环结构**:`for`、`while`和`until`循环语句用于重复执行某段代码,直到满足特定条件。 5. **函数**:Shell脚本支持自定义函数,用`function`关键字定义,如`function myfunc { commands; }`。 三、高级...
Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...
### 循序渐进Linux:基础教材概览与知识点解析 #### 一、Linux系统介绍与版本概述(1.1) - **Red Hat Linux**(1.1.1): Red Hat是最早的企业级Linux发行版之一,广泛应用于服务器领域。它提供了强大的企业级支持...
这包括了对Bash Shell的深入了解,如变量定义、条件语句(if-else)、循环结构(for、while)、函数定义、输入输出重定向以及错误处理等基本概念。此外,指南可能还会讨论高级特性,如数组、shell别名、shell函数...
Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...
《循序渐进Linux第2版》是一本深入浅出介绍Linux操作系统的教材,适合初学者及有一定基础的用户进一步提升。Linux作为一种开源操作系统,因其稳定性、安全性以及强大的服务器管理能力,被广泛应用于各种领域。本书第...
通过上述目录结构可以看出,《循序渐进Linux》这本书从基础知识到高级应用,再到实际操作都进行了详细的讲解,适合不同层次的学习者使用。无论是初学者还是有一定经验的技术人员都能从中受益匪浅。
1. shell脚本基础:包括什么是shell脚本,如何编写一个简单的shell脚本,以及shell脚本的基本结构和组成部分,如脚本头部的hashbang行、注释、变量声明、控制结构(如if语句和循环)、函数定义等。 2. 常用shell...
本教程集合了“Linux初学者入门优秀教程”和“LINUX循序渐进”以及“linux初级篇”,旨在帮助新手快速理解并掌握Linux基础操作。 首先,"Linux初学者入门优秀教程"可能涵盖以下内容: 1. **Linux简介**:解释Linux...
3. 控制结构:理解并能够使用条件语句(if、case)和循环结构(for、while、until)来控制脚本的执行流程。 4. 函数编写:掌握如何在Shell脚本中定义和调用函数,以及参数传递和局部变量的作用域。 5. 脚本调试和...
4. **Shell循环**:循环是脚本中的重要组成部分,例如for、while和until循环。它们允许脚本重复执行一段代码,直到满足特定条件为止,或者在给定的次数内执行。 5. **Shell剑客**(上下):这部分可能是一个系列...
awk ‘{print NR}’ test1.sh|tail -n1 如图所示: 方法二 代码如下: awk ‘END{print NR}’ test1.sh 如图所示: 方法三 代码如下: grep -n “” test1.sh|awk -F: ‘{print ‘}|tail -n1 如图所示: 方法四 ...
这份"shell脚本学习资料"涵盖了使用Shell脚本进行系统管理、文件操作以及数据处理的核心概念。下面我们将深入探讨sed和awk这两个在Shell脚本中常用的命令。 **sed(Stream Editor)** sed是一种流编辑器,它能够...
7. **脚本编程**:学习Shell脚本编程,理解变量、条件语句、循环、函数等基本语法,编写自动化任务和管理系统。 8. **Unix工具**:了解并掌握Unix下的各种工具,如文本处理工具`grep`、`sed`、`awk`,压缩工具`tar`...
2. 循环结构:for、while和until循环的用法。 3. 流程控制:break、continue和case语句。 四、函数 1. 定义函数:如何创建和调用自定义函数。 2. 函数参数:传递参数给函数,并在函数内部使用。 五、输入/输出...
### Shell Awk脚本知识点总结 #### 一、Shell与Awk在文本处理中的应用 在日常工作中,尤其是在技术支持领域,经常会遇到需要处理文本文件的情况。无论是哪种类型的数据库,最终都可以将其导出为文本格式,这为我们...