zoukankan      html  css  js  c++  java
  • linux中awk命令学习

    awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

    通常获取某一行时,我们会使用 “grep 关键字“进行查找,但在读取某一列时,就非awk莫属。

    使用方法

    awk 'pattern {action}' {filenames}

     pattern: 正则表达式或者关键字,既可以过滤出需要分析的语句,以"/"始以“/”终。

    action:action在一个花括号中,表示一个逻辑编码块,通常只需要‘{print $数字}’。

    参数 : -F  '关键字' 表示使用关键字进行切片。

    如何获取Id这列:nova service-list | awk '{print $2}' 。就这么简单,注意花括号用单引号。默认是从1开始的,0表示全部。

    但此刻只想获取数字,不打印出Id,这时只需要在{}中添加打印条件即可。nova service-list| awk '{if (NR>3) print $2}'

    使用 -F 参数,使用:切片/etc/passwd 获取用户名。

    使用pattern 匹配,相当于使用grep 进行一次删选,然后再执行awk分割打印,比如打印出包含var的用户

    从中获取的id号,我们可以继续编程,查询每个id的信息。比如id是用户id,就可以通过id查询用户的信息。如果一个一个查,势必比较慢,这时可以借助linux的for循环助力。这里查询openstack的flavor并展现每个flavor的信息。展示一个flavor的信息:

    在awk中NR 表示number row 行号, FR 表示field number列号

    for line in `nova flavor-list |awk '{if(NR>3)print $2}'`;do echo $line;nova flavor-show $line;done

     在for...in...do...done,每句都需要以分号隔开。可以从中再用grep命令选出flavor中每个的vcpus行。 

    在使用grep命令时,如果是选取其中vcpus和ram都进行展示,则需要 "|" 进行或选取。对|进行转义,表示或运算,而不是|字符串

  • 相关阅读:
    Maven简介,安装,配置
    Centos 安装 Tomcat 并验证
    Centos 安装 jdk 和配置环境变量
    java基本数据类型
    centos7中docker安装并启动jpress
    在docker中访问网络
    在docker中运行一个nginx
    Centos7 安装docker 及使用其简单命令
    Centos7安装dnf工具管理rpm包
    C#获取外网IP地址;C#获取所在IP城市地址
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/8596822.html
Copyright © 2011-2022 走看看