awk

awk

  • AWK是一种处理文本文件的语言。它将文件作为记录序列处理。在一般情况下,文件内容的每行都是一个记录。每行内容都会被分割成一系列的域,因此,我们可以认为一行的第一个词为第一个域,第二个词为第二个,以此类推。
  • AWK程序是由一些处理特定模式的语句块构成的。AWK一次可以读取一个输入行。对每个输入行,AWK解释器会判断它是否符合程序中出现的各个模式,并执行符合的模式所对应的动作。
  • AWK程序是由一系列模式--动作对组成的,写做

pattern { action }

  其中pattern表示AWK在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。输入行被分成了一些记录:记录默认由换行符分割,因此输入会按照行进行分割。

  • 程序使用给定的条件一个个的测试每条记录,并执行测试通过的条件所对应的action。pattern和action都可以省略不写。无pattern默认匹配全部的记录;而无action则是打印原始记录。

awk print

  • Example : echo "tong yi shu" | awk '{print $2}'   # 控制台的输出为 yi
  • Example : awk -F ":" '{print $2}' hello.c   # -F 后跟域分隔符并且要指定文件
  • Example :awk -v col=1 '{print $col}' file.txt   # awk命令中使用变量
  • print 命令用于输出文本。其输出的文本总是以"输出记录分隔符"(Output record separator, ORS)分割的,其默认值为换行符。该命令的最简形式为:

print 会输出当前记录的内容。

  • AWK的内建变量包括域变量,例如$1, $2, $3..$n,以及$0。$0是指整个记录。

这些变量给出了记录中域的内容。 内建变量也包括一些其他变量:

NR:已输入记录的条数。

NF:当前记录中域的个数。记录中最后一个域可以以$NF的方式引用。

FILENAME:当前输入文件的文件名。

FS:“域分隔符”,用于将输入记录分割成域。其默认值为“空白字符”,即空格和制表符。FS可以替换为其它字符,从而改变域分隔符。

RS:当前的“记录分隔符”。默认状态下,输入的每行都被作为一个记录,因此默认记录分隔符是换行符。

OFS:“输出域分隔符”,即分隔print命令的参数的符号。其默认值为空格。

ORS:“输出记录分隔符”,即每个print命令之间的符号。其默认值为换行符。

OFMT:“输出数字格式”(Format for numeric output),其默认值为"%.6g"。

原文地址:https://www.cnblogs.com/tongyishu/p/11856017.html