zoukankan      html  css  js  c++  java
  • Linux三大文本处理工具之awk

    AWK也是一个很强大的文本处理工具,与grep, sed 一起称为linux文本处理的“三板斧”。

    • grep更适合单纯的查找和匹配文本
    • sed适合编辑匹配的文本
    • awk适合格式化文本,倾向于把一行文本分成多个‘字段’来进行复杂的格式化操作。

    如图,awk是逐行处理文本,将一行内容按照指定分隔符将行分割为多个字段,其中分割完后第一个字段为:$1,第二个为$2$0表示当前处理的整行。
    除此之外,awk还有一些特殊的内置变量:

    • NF ,表示每一行($0)有的字段总数,(注:$NFNF不一样,$NF指的是当前行的最后一个字段)
    • NR ,表示当前处理的是第几行
    • FS ,表示目前的分隔符,默认是空格

    1.语法

    awk [option] 'partten1 {action1}; partten2 {action2}'

    匹配条件和动作 ['partten1 {action1}']
    partten表示匹配的条件,action 表示对符合条件的内容进行的操作,常用动作有printf,用于格式化输出。
    注意:

    • partten和action外要用单引号''括起来,action要用花括号{}括起来,
    • 单引号内如果有字符串,必须使用双引号""括起来。

    常用参数 [option]

    • -F 指定分隔符 ,如 awk -F, '{print $1,$2}'
    • -v 定义变量 ,如 awk -va=1,'{print $a+1}'
    • -f 从脚本中读取awk命令

    2.实例

    (1) 无匹配条件

    1. 每行按空格分割,输出第1列和第3列
    • awk '{print $1,$3}'
      注:多个变量之间用逗号,隔开。
    1. 每行按逗号分割,输出第1列和第3列
    • awk -F, '{print $1,$3}'
    1. 加上变量的格式化输出
    • awk -va=1, '{print $1+a,$3}'

    (2) 有匹配条件

    1. 指定分隔符,且输出第3列<10的第一列和第三列字段,并用空格隔开。
    • awk '{FS=":"} $3 < 10 {print $1 " " $3}'
    1. 带有计算的命令
    • awk 'NR==1{pintf $1,$2,"total"};NR>=2{total = $1+$2 print $1,$2,total}'
      注:
      多个命令可用分号;间隔或者使用换行[ENTER]键隔开。
      变量可以直接使用,不需要加$
    1. 带有BEGIN和END两种模式的
      BEGIN 表示指定处理文本之前需要执行的操作。
      END 表示指定处理本文之后需要指定的操作。
      比如,在打印某个文件前先打印'aaa,bbb'
    • awk 'BEGIN{print "aaa","bbb"}{print $1,$2}' file.txt

    参考链接:https://www.runoob.com/linux/linux-comm-awk.html

  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/laiyaling/p/12809643.html
Copyright © 2011-2022 走看看