zoukankan      html  css  js  c++  java
  • (二)linux三剑客之awk

    1.awk是什么和上一节的grep有什么区别?

    2.awk解决了哪些问题?  

    3.awk的工作原理?

    4.awk的基础用法?

    5.awk技术常用【收藏】


     1.awk是什么?

    awk 用于处理文本,grep仅是单纯的搜索文本工具,两者本质区别。


     2.awk解决了哪些问题?

    awk 可以对文本内容进行分析,通过访问文本中的数据进行运算,输出想要的结果

    其实awk不仅有这些功能,还能像c语言一样进行编程!!!

    o my god. 这我也是在后面才发现的,可以进行,判断,循环,数组等功能,因此,可以将awk当成一个脚本语言解释器


     3.awk的工作原理?

    awk 会遍历文件中的每一行,对行数据进行处理

    将文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。


     4.awk的基础用法?

    awk 的基本格式 

      awk  [options]  'BEGIN{ commands } pattern{ commands } END{ commands }'  file

    awk 注意事项

      awk不能用双引号 awk "{print $1}" oytt.txt 这个坑千万别踩!!!!正确写法: awk ‘{print $1}’ oytt.txt

    awk 内置变量

      $0     显示全部内容

      $1 ~ $n  第n列的内容

      NR     文件当前的行号

      NF     文件当前的列数

    awk过滤的时机
      BEGIN{}
        读入第一行文本之前执行
        一般用来初始化操作,指令执行1次
      逐行处理{}
        逐行读入文本执行相应的处理
        是最常见,用的多少的编辑指令块,指令执行n次

      END{}
        处理完最后一行文本后执行
        一般用来出数处理结果,指令执行1次

    5.awk技术常用【收藏】

    文件oytt.txt
    1:2:3:4:5:6:7
    one : two : three
    o y t t

     awk -F  的用法

    -F @ :分隔符,根据@这个进行文本分割,@这个符号不是固定的,你可以用你想用的任意字符, : n 9 = 等等都行,但是不能为空;
    -F ‘@’  或 -F “@” 或 -F @:这里分隔符加不加引号都可以;
    以下案例都是以:分号进行分割;
    【1】 cat oytt.txt | awk  -F :  '{print $1}'
    显示第一列
    【2】 cat oytt.txt | awk  -F :  '{print $NF}' 
    显示每行的有几列
    【3】 cat oytt.txt | awk  -F :  '{print $NR}' 
    显示每行的行号
    【4】 du -f | awk -F ' ' '{print $4, "显示磁盘剩余内容"}'
    可以输入常量,但要注意,print后面要跟逗号,且常量输出在print之后

       awk 基本用法

    【1】cat oytt.txt | awk '{print $1}'
    后面若不带分割符,是根据空格来分割的
    【2】cat oytt.txt | awk '{print $1,$2}'
    后面多个参数,加个逗号

       BEGIN与end的用法

    • BEGIN 语句是在文件第一行之前运行的,因此$n不可用;
    • END 语句是是在所有行处理完后执行的;
    • 一个花括号可以有多条语句,用分号隔开;
    • '{BEGIN{}}'错误; 'BEGIN{}'正确;
    • 'BEGIN{},END{}'错误; 'BEGIN{}END{}'正确;
    • 以上是很容易犯的错误需要注意!
    【1】cat oytt.txt | awk 'BEGIN{print "begin"}{print $1}END{print "end"}'
    完整的写法,可以看出,begin和end一个是在行开始之前,一个是在行结束之后
    【2】cat oytt.txt | awk 'BEINE{x = 90}'
    定义一个变量


    【3】echo -e '1 2 3 4 5 6 7 8' | awk 'BEGIN{x=0}{x+=$2}END{print x}'
    可以对变量求和
    
    
    
    
    
    做一个优秀的程序媛
  • 相关阅读:
    2018 徐州网络赛A
    2018 徐州网络赛 G
    Split The Tree(dfs序+树状数组)
    A Question of Ingestion(Dp)
    Starting a Scenic Railroad Service(前缀和+差分)
    Rendezvous on a Tetrahedron (模拟)
    7032: Knightsbridge Rises(网络流+dfs)
    7033: Lounge Lizards(lis)
    并发服务器
    fork和exec函数
  • 原文地址:https://www.cnblogs.com/oytt/p/12858846.html
Copyright © 2011-2022 走看看