zoukankan      html  css  js  c++  java
  • awk 的逻辑运算字符

    既然有需要用到 "条件" 的类别,自然就需要一些逻辑运算啰~例如底下这些:
    运算单元
    代表意义

    大于
    小于
    >= 
    大于或等于
    小于或等于
    == 
    等于
    != 
    不等于
    值得注意的是那个 == 的符号,因为在『逻辑运算』上面, 就是所谓的大于、小于、等于等等的判断式上面,我们习惯上是以 == 来表示,而如果是直接给予一个值,例如变量设定时,就直接使用 = 而已。 

    如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。

    cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
    name,shell
    root,/bin/bash
    daemon,/bin/sh
    bin,/bin/sh
    sys,/bin/sh
    ....
    blue,/bin/nosh

    awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

    搜索/etc/passwd有root关键字的所有行

    [root@Nginx ~]# awk -F ":" '/root/' /etc/passwd 
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。

    搜索支持正则,例如找root开头的: 

    awk -F: '/^root/' /etc/passwd

    搜索/etc/passwd有root关键字的所有行,并显示对应的shell

    awk -F: '/root/{print $7}' /etc/passwd             
    /bin/bash

     这里指定了action{print $7}

  • 相关阅读:
    模板汇总——Tarjian
    CountHunter 6101 最优贸易 强联通缩点
    POJ-3662 Telephone Lines 二分+双端队列
    EF-获取自增ID值
    EF-记录程序自动生成并执行的sql语句日志
    EF-使用迁移技术让程序自动更新数据库表结构
    EF-关于类库中EntityFramework之CodeFirst(代码优先)的操作浅析
    javascript进阶笔记(3)
    javascript进阶笔记(2)
    javascript进阶笔记(1)
  • 原文地址:https://www.cnblogs.com/nb-blog/p/5285450.html
Copyright © 2011-2022 走看看