awk、变量、运算符、if多分支

awk

语法

awk [options] 'commands' files

option

-F 定义字段分隔符,默认的分隔符是连续的空格或制表符

使用option中的-F参数定义间隔符号

用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域

NF变量表示当前记录的字段数

-v 定义变量并赋值 也可以借用次方式从shell变量中引入

NR变量定址:

NR 表示AWK读入的行数

FNR表示读入行所在文件中的行数

# awk '{print NR,FNR,$1}' file1 file2 

1 1 aaaaa

2 2 bbbbb

3 3 ccccc

4 1 dddddd

5 2 eeeeee

6 3 ffffff



逻辑运算 可直接引用域进行运算

== >= <= != > < ~ !~

# awk 'NR==1 {print}' /etc/passwd

root:x:0:0:root:/root:/bin/bash



3.命令 {print $0}

4.读后处理 END {awk_cmd1;awk_cmd2;}

NR 表示AWK读入的行数:

FNR表示读入行所在文件中的行数

# awk '{print NR,FNR,$1}' file1 file2 

1 1 aaaaa

2 2 bbbbb

3 3 ccccc

4 1 dddddd

5 2 eeeeee

6 3 ffffff

#

逻辑运算 可直接引用域进行运算

== >= <= != > < ~ !~

# awk 'NR==1 {print}' /etc/passwd

root:x:0:0:root:/root:/bin/bash



3.命令 {print $0}

4.读后处理 END
{awk_cmd1;awk_cmd2;}

引用shell变量的方法:

# a=root

# awk -v var=$a -F: '$1 == var {print $0}'
/etc/passwd

或者 把整个命令拆开传递,让shell变量外露,

# awk -F: '$1 == "'$a'" {print $0}'
/etc/passwd

# a=NF

# awk -F: '{print $'$a'}' /etc/passwd

 

操作符:

赋值

= += -= /= *=

逻辑与 逻辑或 逻辑非

&& || !

匹配正则或不匹配,正则需要用 /正则/ 包围住

~ !~

关系 比较字符串时要把字符串用双引号引起来

< <= > >= != ==

字段引用

$ 字段引用需要加$,而变量引用直接用变量名取

运算符

+ - * / % ++ --

分支结构:

if (条件) 动作

若有多个动作,则要用大括号将动作体包含起来 if (条件) {动作1;动作2}

# awk -F: '{if ($1 == "root") print $1}'
/etc/passwd

root



# awk -F: '{if ($1 == "root") {print
$1;print $6}}' /etc/passwd

root

/root

输出样式:

%s是字符类型,%d数值类型

printf默认是不输出换行的所以要加\n

10和7是偏移量

默认是右对齐,所有加个- 就是左对齐,就是把不足的位数用空格填充

注意:格式与输出列之间要有逗号

# awk -F: '{printf "%-10s %-10d %s\n",$1,$3,$7}' /etc/passwd

awk、变量、运算符、if多分支的更多相关文章

  1. 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句

    [源码下载] 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句 作者:webabcd 介绍速战速决 之 PHP 概述 常量 变量 运算符 表达式 控制语句 示例1. ...

  2. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  3. awk变量

    awk变量 awk参数 参数 解释 -F 指定分割字段符 -v 定义或修改一个awk内部的变量 -f 从脚本文件中读取awk命令 对于awk而言,变量分为 内置变量 自定义变量 内置变量 解释 FS ...

  4. Day03:运算符和表达式 / 分支结构

    Java 运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 字符串运算符 ...

  5. Python变量/运算符/函数/模块/string

    Python笔记(一) 1.变量类型 Python 有五个内置的简单类型:bool.int.long.float 和 complex.这些类型是不可变的,就是说整数对象一旦创建,其类型便不可更改. t ...

  6. c#重点[数据类型,构造方法,变量,变量,运算符,装箱,拆箱]

    1.命名规范    类  :名词 每个单词的首字母大写 Dog Student  PersonClass 字段:首个字母小写,如果有多个单词,后面的单词首字母大写 string name=" ...

  7. SpringBoot系列——利用系统环境变量与配置文件的分支选择实现“智能部署”

    前言 通过之前的博客:SpringBoot系列——jar包与war包的部署,我们已经知道了如果实现项目的简单部署,但项目部署的时候最烦的是什么?修改成发布环境对应的配置!数据库连接地址.Eureka注 ...

  8. python基础-变量运算符(3)

    一.注释 注释就是对代码的解释和说明.目的是为了让别人和自己很容易看懂.为了让别人一看就知道这段代码是做什么用的.正确的程序注释一般包括序言性注释和功能性注释.序言性注释的主要内容包括模块的接口.数据 ...

  9. day03 变量 运算符 基本数据类型 输出功能 格式化输出

    变量补充 变量的命名 1变量名的命名的大前提:应该能够反映出变量值所记录的状态 具体的1.变量名由字母数字下划线组成 2.不能以数字开头 3.不能使用关键字命名为变量名 两种写法 1.驼峰体(由字母组 ...

  10. JS 01 变量_数据类型_分支循环_数组

    点击直通车↓↓↓ 数据类型及数据类型的手动转换 数组 一.概念 JavaScript(JS)是一种基于对象和事件驱动.且可以与HTML标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执 ...

随机推荐

  1. 设计模式 --> (15)职责链模式

    职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 示例 考虑员工要求加薪.公司的管理者一共有 ...

  2. Lucene教程 -------(一、初始Lucene)

    一.lucene的介绍 lucene是一个全文检索的框架,apache组织提供了一个用java实现的全文检索的开源项目.功能非常的强大,api非常简单,并且有了全文检索的功能支持可以非常方便的实现根据 ...

  3. java 语法分析器 括号匹配

    package test; import java.util.*;public class Test {    public String text="fewe{f(sdd(f)a[j]sd ...

  4. centos 安装atom 笔记

    一.安装atom  "To install Atom on Linux, you can download a Debian package or RPM package either fr ...

  5. BLESS学习笔记

    BLESS全称:Bloom-filter-based Error Correction Solution for High-throughput Sequencing Reads,即基于布隆过滤器的高 ...

  6. GLES2学习VBO和VAO的使用

    在GLES2中使用VBO和VAO对象,已经简单vs,ps绘制一个三角形. 1. 初始化操作代码,创建VBO.VAO,编译和链接shader program. void DebugApplication ...

  7. 跨平台原生AR/VR应用研发引擎-NVisionXR开放内测

      NVisionXR引擎正式开放内测.现在,对原生AR/VR应用开发有兴趣的企业和开发者均可通过NVisionXR官网(www.nvisionxr.com)申请试用. NVisionXR引擎介绍视频 ...

  8. python全栈学习--day5

    字典 特点:字典是python中唯一的映射类型,采用键值对(key-value) 的形式存数据. 存储大量的数据,是关系型数据,查询数据快. 字典初始说明: 遍历字典从列表开始,列表是从头便利到尾的. ...

  9. JavaScript(第二十四天)【事件对象】

    JavaScript事件的一个重要方面是它们拥有一些相对一致的特点,可以给你的开发提供更多的强大功能.最方便和强大的就是事件对象,他们可以帮你处理鼠标事件和键盘敲击方面的情况,此外还可以修改一般事件的 ...

  10. Bate版敏捷冲刺每日报告--day1

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...