用awk编写Shell脚本

一、概述

1. 产品概述:

awk是一种编程语言,用于在linux/unix下对文本和数据进行扫描与处理。数据可以来自标准输入、文件、管道。

awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Peter Weinberger、Brian Kernighan。

实际上awk有很多种版本,如:awk、nawk、mawk、gawk、MKS awk、tawk...  这其中有开源产品也有商业产品。

目前在Linux中常用的awk编译器版本有mawk,gawk,其中以RedHat为代表使用的是gawk,以Ubuntu为代表使用的是mawk。

gawk是GNU Project 的awk解释器的开源代码实现。

本文将以gawk作为讲解工具。

2. 原理:

1). awk逐行扫描文件,从第一行到最后一行,寻找匹配特定模式的行,并在这些行上进行你想要的操作。

2). awk基本结构包括模式匹配(用于找到要处理的行)和处理过程(即处理动作)。

  pattern  {action}

# 提示:awk读取文件内容的每一行时,将对比改行是否与给定的模式相匹配,如果匹配则执行处理过程,否则对该行不做任何处理。

如果没有指定处理脚本,则把匹配的行显示到标准输出,即默认处理动作是print打印行;

如果没有指定模式匹配,则默认匹配所有数据。

3). awk有两个特殊的模式:BEGIN和END,他们被放置在没有读取任何数据之前以及在所有数据读取完成以后执行。

3. awk流程图:

提示:awk将文件中的每一行当作一条记录,并将记录分割为若干字段,默认以空格或制表符为分隔符。

如This   is   a    test    file.    将分割为5个字段,awk可以对这5个字段进行分别处理。

时间: 2024-05-18 22:20:23

用awk编写Shell脚本的相关文章

一个关于编写shell脚本的问题

问题描述 一个关于编写shell脚本的问题 在linux中写出一个shell脚本在12点之前.在屏幕上打印早上好.12点后18点前打印 解决方案 !bin/bash date=$(date +%k) if[ $date>12 ] then echo ""下午好!"" elif [ $date<12 ] then echo ""早上好!"" fi

编写shell脚本将VPS上的数据备份到Dropbox网盘的方法_linux shell

看到有人用dropbox备份网站数据,所以今天也试了一下,记得以前是一个python脚本,这是用的是bash 脚本,利用dropbox的api来上传下载的,很方便,脚本的地址是Dropbox-Uploader/dropbox_uploader.sh at master · andreafabrizi/Dropbox-Uploader · GitHub ,感谢作者分享这个脚本. 可以到git下载dropbox_uploader.sh,地址为:https://github.com/andreafab

CentOS下编写shell脚本来监控MySQL主从复制的教程_Mysql

目的:定时监控MySQL主从数据库是否同步,如果不同步,记录故障时间,并执行命令使主从恢复同步状态 1.创建脚本文件 vi /home/crontab/check_mysql_slave.sh #编辑,添加下面代码 #!/bin/sh # check_mysql_slave status ip=eth0 #网卡名称 mysql_binfile=/usr/local/mysql/bin/mysql mysql_user=root #MySQL数据库账号 mysql_pass=123456 #密码

编写第一个Shell脚本

最近一直在看shell方面的资料,很乏味,也不知道看的效果,正好下午Linux群里一兄弟,提出了一个他们公司的需求,听了之后有点思绪,感觉应该可以写出来,个人的第一个Script就诞生... 需求:每天登陆服务器查看磁盘空间比较麻烦,所以就想利用一个脚本,用来检测系统磁盘空间,然后将结果通过邮件的形式发送到指定邮箱. Script内容如下: #!/bin/bash #2012/09/17 by Song #Email:XXX@163.com DiskNum=`df -h | grep sda1

编写可靠shell脚本的八个建议

这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了. 1. 指定bash shell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同. 我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的

编写可靠shell脚本的8个建议

这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了. 1. 指定bash shell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同. 我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的

Shell脚本编写Nagios插件监控程序资源占用_linux shell

一般情况下,我们只需要监控程序进程在没在就可以了.但是这次遭遇了这样的事,公司开发的程序,程序进程还在,但是死锁了.导致大范围的影响,更要命的是根本不知道问题出在哪里,还是别的测试部同事帮忙发现的,真是丢尽运维的脸了- 为避免下次再遭遇到这样的情况,分析了这次进程死锁的现象,发现死锁会占用100%的cpu,正常情况下只占用10%以内.决定编写nagios插件,用来监控程序占用的资源,包括cpu,内存等. 一.shell脚本需求分析:    能设置cpu,mem的阈值,资源占用超过阈值就报警.  

Shell脚本编写的八条可靠建议(值得收藏)_linux shell

这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训.事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条.毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了. 1. 指定bash shell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同. 我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的

一个shell脚本编写小助手

功能: 1.自动检测否存在同名文件,存在则提示用户存在,并给出编辑,删除后创建,和退出3个选项 2.自动添加脚本版权信息(有自定义和默认2种方式) 3. 自动检测有无语法错误:如果有语法错误则提示用户是否退出,不退出则打开vim修改,直到修改正确为止 4.脚本编写成功后自动添加执行权限 用法: 执行脚本后面添加脚本名称即可 #!/bin/bash #:-------------CopyRight------------- #:Name:lustlost - 1.0 #:Date:2012-7-1