其实shell脚本的功能常常被低估。在实际应用中awk sed 等用法可以为shell提供更为强大的功能。下面我们将一下awk调用的简单方法进行了总结。方便同学们学习:

awk的简单用法:

第一种调用:

awk ‘BEGIN {print “start”;var=1} {print $1, $2} END{var=$3}’file

使用单引号括起awk的命令,{ }代表不同的动作中间的代码段(红色部分):在执行每一条记录时都会执行。

BEGIN 代表开始输入文件之前的操作

END 代表输入文件结束之后的操作

第二种调用方法:

awk -f test.awk file

test.awk文件的写法:

#! /usr/bin/awk –f

BEGIN {print “start”; var=1}

{ print $1, $2;

arg=$3; //////可以用分号分开不同的操作。

print arg

}

END {printf(“the test is over\n”}

第三种调用方法:

给test.awk文件添加执行权限: chomd a+x test.awk

./test.awk file

参数和表达式使用:

1)

-F “:” 代表域的分割符是 冒号。

awk -F “:” ‘{print $1, $2}’ file

或者使用FS变量

awk ‘BEGIN{FS=”:”; var=2} {print $1, $2} ‘ file

2)支持 printf的格式化输出

awk -F “:” ‘{printf(“%d, %d\n”, $1, $2}’ file

3) $0代表所有的域

$1代表第一个域

系统变量 FILENAME代表当前文件名

系统变量 ARGC代表当前传入参数的个数

系统变量 ARGV代表当前传入参数的数组

系统变量 FS 代表字段分割符

系统变量 NF 代表当前记录的域数量

系统变量 NR 代表当前记录数

print NR;print NF;

4)支持if else 语句。

{

If ($2 >= 0)

{ print “$2 is >= 0”;

print “$2 is greate 0”

}

else

{

print “$2 is < 0”;

print “$2 is < 0”

}

}

5)可以在shell脚本中使用:

可以方便的将awk获得值赋值给一个变量。

(1)#!/bin/bash

var=` grep -e “\” file |awk -F “:” ‘print $2’ `

echo $var

(2)#!/bin/bash

var= ` ./$1 $2 `

其中: $1 是带有执行权限的 test.awk文件

$2 时需要检索的文件file

运行: ./test.sh test.awk file

Shellz中awk的简单用法的更多相关文章

  1. UltraEdit中使用正则表达式-简单用法

    UltraEdit中使用正则表达式 1.认识正则表达式语法: 正则表达式 (UltraEdit Syntax): % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串 ...

  2. C# Winfom 中ListBox的简单用法

    https://www.cnblogs.com/xielong/p/6744805.html Winform控件ListBox的用法 1.如何添加listBox的值 this.listBox1.Ite ...

  3. (数据科学学习手札54)Python中retry的简单用法

    一.简介 retry是一个用于错误处理的模块,功能类似try-except,但更加快捷方便,本文就将简单地介绍一下retry的基本用法. 二.基本用法 retry: 作为装饰器进行使用,不传入参数时功 ...

  4. shell中awk printf的用法

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...

  5. java中printf()方法简单用法

    %n 换行 相当于 \n %c 单个字符 %d 十进制整数 %u 无符号十进制数 %f 十进制浮点数 %o 八进制数 %x 十六进制数 %s 字符串 %% 输出百分号 > 在printf()方法 ...

  6. C++中template的简单用法

    模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计.C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream.使用模板可以使用 ...

  7. 转载:shell中awk printf的用法

    转载:http://www.linuxawk.com/jiaocheng/83.html 6. printf函数   打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表 ...

  8. java 开发中 dom4j的简单用法

    Java中处理XML的方式有很多种,个人任务dom4j还是比较好用的.下面介绍以下简单的使用方法 先把import补充上 import org.dom4j.Document; import org.d ...

  9. 转 jsp中 session的简单用法

    Session对象:是用来分别保存每一个用户信息的对象,以便于跟踪用户的操作状态.Session的信息保存在服务端,Session的ID保存在客户机的Cookie中.事实上,在许多服务器上,如果浏览器 ...

随机推荐

  1. 巧用花生壳将局域网内的FTP和www服务器发布到互联网

    一.目的:用生壳发布FTP和mail服务器到互连网. 二.网络环境:(出租房多家共用路由器上网,ADSL的1Mbps带宽,动态PPPOE拨号,帐号和密码存储在soho路由器中,路由器自动联机上网,并为 ...

  2. 沉淀再出发:web服务器和应用服务器之间的区别和联系

    沉淀再出发:web服务器和应用服务器之间的区别和联系 一.前言 关于后端,我们一般有三种服务器(当然还有文件服务器等),Web服务器,应用程序服务器和数据库服务器,其中前面两个的概念已经非常模糊了,但 ...

  3. redis缓存机制【转载】

    转载自:http://blog.csdn.net/acmman/article/details/53434134 redis的主从模式(1)介绍redis存储数据是在内存中运行的,运行速度比关系型数据 ...

  4. POJ2720 Last Digits

    嘟嘟嘟 一道题又写了近两个点-- 这道题直接暴力快速幂肯定会爆(别想高精),所以还是要用一点数学知识的- 有一个东西叫欧拉降幂公式,就是:      \(x ^ y \equiv x ^ {y \ \ ...

  5. [Noip2007]Core树网的核

    嘟嘟嘟 首先求树的直径两次bfs即可,实际上bfs就是最短路,因为树上路径是唯一的,所以用任何一种遍历方法都行(spfa和dijkstra当然也可以). 可以证明,只要求出任意一条直径就行了,为什么呢 ...

  6. 随手练——HDU 1237 表达式求值(输入格式典型)

    坑了老子半天,结果是 float 范围不够!!! 基本思想: 开一个符号栈,一个数字栈: 碰到数字就入栈,碰到符号就与栈顶符号进行对比,如果当前符号优先级小于栈顶符号,数字栈弹出两个数进行栈顶符号运算 ...

  7. 【js】五子棋-UI学习

    http://www.imooc.com/learn/639 棋盘用canvas实现

  8. Python 模块化 import 语句介绍(一)

    用法: import 模块1[,模块2,模块3...] os 顶级模块os.path 非顶级模块as 相当于重命名 import 的本质: 解释器负责模块单独加载,单独初始化,生成一个模块对象,当前作 ...

  9. H5上传图片,并且显示进度条

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. flink统计根据账号每30秒 金额的平均值

    package com.zetyun.streaming.flink; import org.apache.flink.api.common.functions.MapFunction;import ...