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. Beego 框架学习(一)

    Beego官网本身已经整理的非常详细了,但是作为一个学习者,我还是决定自己好好整理一下,这样在后面使用的时候自己对每部分才能非常熟悉,及时忘记了,也可以迅速定位自己要用的知识在哪里.当然也是对官网的一 ...

  2. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  3. business expressions(二)

    1,to give someone a heads up = to inform someone about something important ("heads up") be ...

  4. 自然语言处理中的自注意力机制(Self-attention Mechanism)

    自然语言处理中的自注意力机制(Self-attention Mechanism) 近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中,之前我对早期注意力 ...

  5. Oracle/Hive/Impala SQL比较1

    5 Function      指数据库内置的function,不讨论UDF.另外,操作符都不比较了,区别不大.   5.1 数学函数 功能 Oracle Hive Impala ABS 绝对值,有 ...

  6. Spark Job的提交与task本地化分析(源码阅读)

    Spark中任务的处理也要考虑数据的本地性(locality),Spark目前支持PROCESS_LOCAL(本地进程).NODE_LOCAL(本地节点).NODE_PREF.RACK_LOCAL(本 ...

  7. windows环境下,apache虚拟主机配置

    在windows环境下,apache从配置文件的相关配置: Windows 是市场占有率最高的 PC 操作系统, 也是很多人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差异 ...

  8. beta冲刺2

    q前言:今天晚上大概把github的的相关东西弄上了.然后把之前做的一些修改什么的也上传上去了.目测之后的话就是在自己这边改完然后直接上github那边去复制粘贴替换掉了. 昨天的问题:github这 ...

  9. from nltk.book import * 出错的解决方法

    import nltknltk.download() 在使用上面命令安装了nltk库并运行下载后,再输入from nltk.book import * 往往会出现这样的错误提示: 出现这种错误往往是由 ...

  10. 下载文件downloadFile

    public static void downLoadFile(InputStream inStream, String fileName) { if (StringUtils.isBlank(fil ...