博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
强大的文本处理工具之三awk
阅读量:6564 次
发布时间:2019-06-24

本文共 1122 字,大约阅读时间需要 3 分钟。

文本处理三剑客之三,功能十分强大

基本用法

awk [opinions] 'program' var=value fileawk [opinions]  -f  programfile var=value file

通常awk程序由:BEGIN语句块、可使用模式匹配的通用语句块、END语句块组成

基本格式

awk [options] 'program' file

Pattern和action

  • pattern部分决定动作语句何时触发以及触发事件
    BEGIN ,END
  • action statements对数据进行处理,放在 { } 内指明

    print ,printf
    分隔符、域和记录

    awk在执行时,由分隔符分隔的字段标记$1,$2,$3,$n称为域表示,$0为所有域,即默认打印所有信息文件的每一行称为记录省略 action,即默认执行print $0 的操作

    工作原理


    1. 执行BEGIN { action } 语句块中的语句
    2. 从文件/标准输入读取第一行,然后执行pattern{ action ;…} 语句块,逐行执行知道文件读取完毕
    3. 当读至输入流末尾时,执行END{action;…}语句块

      基本选项:-F 指明输入时用到的字段分隔符 // -v var=value 自定义变量

      [root@linux-centos7~]# awk -F: '{print}' /etc/passwd

      上述语句执行结果为/etc/passwd文件中的所有内容,因为print没有指定任何字段,默认打印所有内容

      [root@linux-centos7~]# awk -F: '{print $1,$7}' /etc/passwd

      上述语句执行结果为/etc/passwd文件中,以" : "为分隔符第一列和第七列的内容,默认中间用一个空格分隔
      强大的文本处理工具之三awk

      [root@linux-centos7~]# awk -v test='hello' BEGIN'{print test}' /etc/passwd

      上述语句执行结果只有一个hello,因为在awk里面-v 赋值test为hello,print打印test变量的值,由于前面有BEGIN,故只输出BEGIN语句块执行结果,不会输出和/etc/passwd文件行数一样多的hello,因为在BEGIN之后没有pattern语句

    [root@linux-centos7~]# awk -v test='hello' BEGIN'{print test}''{print $1,$7}' /etc/passwd

    上述语句则会输出

转载于:https://blog.51cto.com/11742700/2093585

你可能感兴趣的文章
禁用输入框 浏览器的自动补全功能
查看>>
Mybatis配置文件属性讲解
查看>>
解决Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4
查看>>
LR--用栈实现移进--归约分析(demo)
查看>>
二叉树
查看>>
基于 HTML5 的 WebGL 3D 版俄罗斯方块
查看>>
使用Windbg调试系统弹出的内存不可读错误
查看>>
python之多线程通信
查看>>
Install Ubuntu Fonts on Fedora17
查看>>
Java 沙箱安全模型
查看>>
打印沙漏
查看>>
常用软件下载地址整理~(数据库,开发工具,资料站点等笔记)
查看>>
PS中怎么给图层解锁
查看>>
JSF 中h:link 和h:commandLink和 h:outputLink之间的区别
查看>>
在应用中集成科大讯飞的语音识别技术
查看>>
Android 两种为自定义组件添加属性的使用方法和区别
查看>>
Django学习笔记(1)--第一个项目
查看>>
cocos2dx新建android项目lib拷贝、访问权限等问题集
查看>>
如何构建日均千万PV Web站点 (三) Sharding
查看>>
C# Datatable排序
查看>>