zoukankan      html  css  js  c++  java
  • 1-27 awk 基本使用

    大纲:

    色彩:

    awk基本使用

    #####################################################

    一、色彩:shell中,设置输出文本色彩(前景色,背景色)

    在Shell中,可以给输出的字体设置颜色(前景色、背景色)

    颜色

    黑色

    红色

    绿色

    黄色

    蓝色

    紫色

    蓝色

    白色

    字体编码

    30

    31

    32

    33

    34

    35

    36

    37

    背景编码

    40

    41

    42

    43

    44

    45

    46

    47

    1、字背景色、字体颜色、字体效果可单独使用也可组合使用前后顺序没有关系,用英文的 ";" 隔开

    2、字背景色、字体颜色、字体效果后面有一个m

    3、字符串前后可以没有空格,如果有的话,输出也是同样有空格

    实例:

    echo -e "33[30;47m 黑色字 33[0m"

    echo -e "33[31m 红色字 33[0m"

    echo -e "33[32m 绿色字 33[0m"

    echo -e "33[33m 黄色字 33[0m"

    echo -e "33[34m 蓝色字 33[0m"

    echo -e "33[35m 紫色字 33[0m"

    echo -e "33[36m 蓝色字 33[0m"

    echo -e "33[37m 白色字 33[0m"

    wps7F4.tmp

    二、awk基本使用

    grep、sed、awk 文本处理工具,各有优缺

    grep:主要用于文本过滤,相对于其他工具效率高

    sed 流编辑器 默认只处理模式空间中的数据,以行为单位进行操作。

    awk 报告生成器,将数据格式化后,显示出来。以列为单位进行操作。

    awk命令由来:根据其三位作者而得名

    Alfrd Aho 、 Peter Weinberger 、Brian Kernighan

    可以进行正则表达式的匹配样式装入流控制数学运算符进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。最简单地说,AWK是一种用于处理文本的编程语言工具。

    工程流程:

    awk将文本逐行的读入内存中,不直接对文本进行处理,分片后,(默认空格符号为分隔符),输出结果,在内部引用位置变量,我们可以使用位置变量指定要输出的片段。

    Usage: awk [options] '{print $1}' file ...

    #支持位置参数

    举例

    输出第一个片段

    awk '{print $1}' test.txt

    wps805.tmp

     

    awk的输出 print

    1、当要输出多个变量时,print命令使用 {默认 ,“逗号”}分割,输出时,默认已空格分割

    2、输出的item可以为字符串或数值、当前记录的字段(如$1)、变量或awk的表达式数值会先转换为字符串,而后再输出

    3、print命令后面的item可以省略,此时其功能相当于print $0, 因此,如果想输出空白行,则需要使用print "";

    实例:输出用户登录名和登录shell需指定输入分隔符为:

    awk -v FS=: '{print $1,$7}' /etc/passwd

    wps806.tmp

    awk -F : '{print $1,$7}' /etc/passwd

    wps807.tmp

    awk命令常用变量:

    FS   # 字段分隔符

    OFS  # 输出字段分隔符

    NF   # 当前记录分段数($NF 即本行最末尾一个字段)

    RS   # 记录分隔符,默认是换行符

    NR   # awk处理的记录数

    FNR  # 当前处理行在当前文件中总共被处理的行数

    BEGIN

    END

    wps808.tmp

    实例:修改输出分隔符

    wps809.tmp

    wps80A.tmp

    字段分隔符的指定方式

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

    #指定以”:“为分隔符

    awk -v FS=: '{print $NF}' /etc/passwd

    #指定以”:“为分隔符 -v表示声明一个变量

    wk 'BEGIN{FS=":"}{print $1,$3}' /etc/passwd

    #在命令执行之前为变量赋值

    awk -v OFS=: '{print $1,$2}' a.txt

    #OFS 指定输出字段分隔符

    用户自定义变量

    gawk允许用户自定义自己的变量以便在程序代码中使用,变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头。gawk变量名称区分字符大小写。

    awk 'BEGIN{var="xuegod test";print var}'

    #给变量赋值,并输出变量的值

    wps80B.tmp

    awk -v var="xuegod test" 'BEGIN{print var}'

    #给变量赋值并输出变量的值

    wps80C.tmp

    实战:awk过滤数据(使用脚本实现,计算当前内存使用率)

    [root@xiaogan122 ~]# vim mem.sh

    #file ---> mem.sh

    #!/bin/bash

    limit=50

    Mem=$(free -m | grep Mem | awk '{print $3}')

    total=$(free -m | grep Mem | awk '{print $2}')

    tmp=$(( 100 * $Mem / $total ))

    echo "The Used Memery is $tmp%."

    if [ $tmp -gt $limit ]

    then

        echo " Be Carefull! "

    fi

    [root@xiaogan122 ~]# sh mem.sh

    wps80D.tmp

  • 相关阅读:
    批量修改mp3文件播放速度
    尝试了一下alsa录音播放的编程。
    最快速获取天气的方法
    乒乓Buffer
    GCC编译选项和环境变量
    Linux发行版本
    memcpy 和 memmove
    自动定位android ndk的路径
    记一下,安装和使用Ubuntu过程中遇到的问题
    Android API 和Android 版本对照
  • 原文地址:https://www.cnblogs.com/xiaogan/p/5860489.html
Copyright © 2011-2022 走看看