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}

  • 相关阅读:
    献给即将27岁的我
    oracle导表小结
    [译]第三章:什么是组织结构
    第三章:什么是组织结构
    第二章:什么是组织
    [译]第二章:什么是组织
    第一章:什么是管理
    [译]第一章:什么是管理
    [原]DbHelper-SQL数据库访问助手
    DbHelper-SQL数据库访问助手
  • 原文地址:https://www.cnblogs.com/nb-blog/p/5285450.html
Copyright © 2011-2022 走看看