`
shinfocom
  • 浏览: 1220866 次
文章分类
社区版块
存档分类
最新评论

shell脚本学习:循序渐进之初级awk语句,until循环,test语句

 
阅读更多

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命令简介

    awk命令常用于在Linux shell脚本中进行数据提取、文本转换、数据报告生成等操作。本文将对awk命令的基本知识进行介绍,包括其工作原理、参数说明、内置变量、内置函数和使用示例。 首先,awk的工作流程可以从读取...

    shell脚本学习指南

    4. **循环结构**:`for`、`while`和`until`循环语句用于重复执行某段代码,直到满足特定条件。 5. **函数**:Shell脚本支持自定义函数,用`function`关键字定义,如`function myfunc { commands; }`。 三、高级...

    Linux-shell脚本全面学习.pdf

    Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...

    循序渐进linux

    ### 循序渐进Linux:基础教材概览与知识点解析 #### 一、Linux系统介绍与版本概述(1.1) - **Red Hat Linux**(1.1.1): Red Hat是最早的企业级Linux发行版之一,广泛应用于服务器领域。它提供了强大的企业级支持...

    Shell脚本专家指南.sed与awk第二版.shell十三问

    这包括了对Bash Shell的深入了解,如变量定义、条件语句(if-else)、循环结构(for、while)、函数定义、输入输出重定向以及错误处理等基本概念。此外,指南可能还会讨论高级特性,如数组、shell别名、shell函数...

    Shell脚本之awk篇

    Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...

    循序渐进Linux第2版 .rar

    《循序渐进Linux第2版》是一本深入浅出介绍Linux操作系统的教材,适合初学者及有一定基础的用户进一步提升。Linux作为一种开源操作系统,因其稳定性、安全性以及强大的服务器管理能力,被广泛应用于各种领域。本书第...

    《循序渐进Linux》详细目录结构

    通过上述目录结构可以看出,《循序渐进Linux》这本书从基础知识到高级应用,再到实际操作都进行了详细的讲解,适合不同层次的学习者使用。无论是初学者还是有一定经验的技术人员都能从中受益匪浅。

    shell脚本指南

    1. shell脚本基础:包括什么是shell脚本,如何编写一个简单的shell脚本,以及shell脚本的基本结构和组成部分,如脚本头部的hashbang行、注释、变量声明、控制结构(如if语句和循环)、函数定义等。 2. 常用shell...

    Linux初学者入门优秀教程+LINUX循序渐进+linux初级篇

    本教程集合了“Linux初学者入门优秀教程”和“LINUX循序渐进”以及“linux初级篇”,旨在帮助新手快速理解并掌握Linux基础操作。 首先,"Linux初学者入门优秀教程"可能涵盖以下内容: 1. **Linux简介**:解释Linux...

    Shell 脚本专家指南

    3. 控制结构:理解并能够使用条件语句(if、case)和循环结构(for、while、until)来控制脚本的执行流程。 4. 函数编写:掌握如何在Shell脚本中定义和调用函数,以及参数传递和局部变量的作用域。 5. 脚本调试和...

    shell脚本培训视频.rar

    4. **Shell循环**:循环是脚本中的重要组成部分,例如for、while和until循环。它们允许脚本重复执行一段代码,直到满足特定条件为止,或者在给定的次数内执行。 5. **Shell剑客**(上下):这部分可能是一个系列...

    Shell脚本统计文件行数的8种方法

    awk ‘{print NR}’ test1.sh|tail -n1 如图所示: 方法二 代码如下: awk ‘END{print NR}’ test1.sh 如图所示: 方法三 代码如下: grep -n “” test1.sh|awk -F: ‘{print ‘}|tail -n1 如图所示: 方法四 ...

    shell脚本学习资料

    这份"shell脚本学习资料"涵盖了使用Shell脚本进行系统管理、文件操作以及数据处理的核心概念。下面我们将深入探讨sed和awk这两个在Shell脚本中常用的命令。 **sed(Stream Editor)** sed是一种流编辑器,它能够...

    循序渐进unix教程第3版

    7. **脚本编程**:学习Shell脚本编程,理解变量、条件语句、循环、函数等基本语法,编写自动化任务和管理系统。 8. **Unix工具**:了解并掌握Unix下的各种工具,如文本处理工具`grep`、`sed`、`awk`,压缩工具`tar`...

    [Shell脚本专家指南]高清版

    2. 循环结构:for、while和until循环的用法。 3. 流程控制:break、continue和case语句。 四、函数 1. 定义函数:如何创建和调用自定义函数。 2. 函数参数:传递参数给函数,并在函数内部使用。 五、输入/输出...

    shell awk脚本总结.txt

    ### Shell Awk脚本知识点总结 #### 一、Shell与Awk在文本处理中的应用 在日常工作中,尤其是在技术支持领域,经常会遇到需要处理文本文件的情况。无论是哪种类型的数据库,最终都可以将其导出为文本格式,这为我们...

Global site tag (gtag.js) - Google Analytics