Shell脚本之awk文本编辑器语法(shell脚本awk用法)

admin3年前云主机41

AWK  ——是一种用于处理文本的编程语言工具。
    英文原义:Aho、Weinberger、Kernighan
    中文释义:三位创造者Aho、Weinberger和Kernighan统称

    AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法。最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。

    awk 之所以成为一种优秀的程序设计语言的原因之一是内置函数的使用,awk定义并支持了一系列的内置函数,由于这些函数的使用,使得awk提供的功能更为完善和强大。

常用语法:
    awk    [options]    'commands'        testfiles
   
options选项
    -F    定义字段分隔符,默认分隔符为连续空格或制表符
        用$1,$2,$3等顺序表示files中每行以间隔符号分隔的各列不同域
    -v    定义变更并赋值,也可以借用次方式从shell变量中引入变量
使用示例:
[root@localhost test]# awk -F":" '{print $1,$7}' testfile
        以冒号作为分隔符,打印第1和第7个字段
[root@localhost test]# awk -F"[:/]" '{print $1,$7}' testfile
        以冒号或斜杠 / 作为分隔符,打印第1第7个字段
[root@localhost test]# awk -F":/" '{print $1,$7}' testfile
        以冒号加斜杠 “:/”整体作为分隔符
       
-----------------------------------------------------------   
command
    读前处理    行处理        读后处理
        1、读前处理    BEGIN{awk_cmd1;awk_cmd2;}
        2、行处理:定址    命令
        定址方法:正则,变量,比较,关系运算
                正则需要用 / / 包裹起来
        常用正则:
            ^    行首                $    行尾
              .    除了换行符以外的任意单个字符
              *    前导字符的零个或多个
              .*    所有字符
              []    字符组内的任一字符
              [^]    对字符组内的每个字符取反(不匹配字符组内的每个字符)
              ^[^]    非字符组内的字符开头的行
              [a-z] 小写字母
              [A-Z] 大写字母
              [a-Z] 小写和大写字母
              [0-9] 数字
              \<    单词头,以空格或特殊字符做分隔,连续的字符串被当做单词
              \>    单词尾

        扩展正则
              ?        前导字符零个或一个
              +        前导字符一个或多个
              abc|def        abc或def
              a(bc|de)f        abcf 或 adef
              x\{m\}          x出现m次
              x\{m,\}          x出现m次至多次(至少m次)
              x\{m,n\}        x出现m次至n次

        NR变量定址,NR 表示AWK读入的行数
        FNR表示读入行所在文件中的行数
       
        逻辑运算——可直接引用域进行运算
            ==    >=    <=    !=    >    <    ~    !~
            如:# awk 'NR==1 {print}'  /etc/passwd
                    root:x:0:0:root:/root:/bin/bash
                           
        命令    如:{print $1,$2}
       
    3、读后处理
        END {awk_cmd1;awk_cmd2;}

---------------------------------------------------------------
AWk的变量
    NR    AWK处理的总行数
    FNR  AWK处理的当前文件的行数,非全部
    FS    字段分隔符,默认为连续空格或制表符,可以使用多个不同的符号做分隔符,也可在options出使用  -F[:/]    指定分隔符
    OFS  输出字符的分隔符 默认是空格
            如:# awk -F: 'OFS="***" {print $1,$2}' /etc/passwd
                      root***x
    NF    当前读入行的字段个数
    ORS  输出行的分隔符,默认是换行
        # awk -F: 'ORS="***" {print $1,$2}' /etc/passwd
        root x***bin x***
    FILENAME    当前文件名

相关阅读:

sed与awk常用功能

Linux下shell编程常用grep\awk\sed语法

Linux下Shell编程——awk编程

文本处理工具awk详解

Linux awk命令使用详解

《Shell脚本之awk文本编辑器语法(shell脚本awk用法)》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

海外服务器如何避免被攻击?——建立安全护盾

随着互联网的快速发展,海外服务器成为了越来越多企业和个人的选择,但也面临着越来越多的网络攻击。建立安全护盾是解决海外服务器被攻击问题的关键。本文将从四个方面介绍如何建立安全护盾,保障海外服务器的安全。...

漏洞扫描

漏洞扫描随着互联网的发展,互联网用户数量不断增长,各种数据也在海量上涌。对于企业而言,数字化的时代下数据已经成为了宝贵资源,因此保护企业的数据安全势在必行。所以漏洞扫描技术的出现成为了企业信息安全的一...

成都GPU服务器主要的用途有哪一些?租用成都GPU服务器配置选择哪款比较好?

成都GPU服务器,简单来说,GPU服务器是基于GPU的应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算服务。那么成都GPU服务器主要的用途有哪一些?一、运行手机模拟器GPU服务器...

ICEM CFD学习指南:从入门到精通

ICEM CFD是一种功能强大的计算流体力学软件工具, 专门用于建模和模拟流体流动。本篇文章将介绍ICEM CFD学习指南:从入门到精通,为读者提供背景信息和引起他们的兴趣。正文:一、ICEM CFD...

网站被劫持勒索怎么办?福建BGP高防服务器租用哪里有?

网站被劫持勒索怎么办?互联网出现后的几十年时间里,世界便由一张张网串联了起来,给我们的生活带来了无限的便利。但在互联网飞速发展的同时,恶意网络攻击也随之而来,近年来,互联网攻击事件频发,不法分子利用常...

服务器软件怎么维护(服务器软件维护指南)

一、备份和恢复服务器在运行过程中,会不可避免地出现数据丢失或损坏的情况。为了避免这种情况的发生,我们需要对服务器数据进行备份。备份的目的是为了保留数据、保障数据有效性、提高数据可用性和从故障中恢复数据...