awk 简单使用教程(一)

简介: awk 简单使用教程(一)

awk是Linux环境下重要的结构化文本处理工具,非常便捷好用。

之前我一直使用 Python 来处理 Linux 的一些文本,但是对于一些大文本的简单处理,Python 麻烦而且慢,于是现在慢慢改用awk来处理,很多时候一行命令就能解决,因此非常方便。针对使用是过程的一些心得,写个小小的教程,awk太强大了,需要慢慢长时间的学习,我尽量保持更新这个教程吧。


awk基本概念


awk是基于列的处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出各字段的值。awk认为文件都是结构化的,也就是说都是由单词和各种空白字符组成的,“空白字符”包括空格、tab、连续的空格和tab等,因此awk特别适合用于csv文件的处理。


域(字段)


  • awk中每个非空白的部分叫做域(或者字段),从左到右依次是第一个域,第二个域。1,1,12表示第一域第二个域,$0表示全部域,也就是整行。
  • 打印第一个和第四个列:awk '{print $1,$4}' awk.txt
  • 打印全部内容:awk '{print $0}' awk.txt
  • $NF表示最后一列,$(NF-1)倒数第二列,依次类推
  • 打印最后一列:awk '{print $NF}' awk.txt

分割符


作为csv文件处理工具,分隔符对于awk非常重要,根据输入和输出、域间和行间,共有4个分隔符变量:

分割域 分割行
输入 FS RS
输出 OFS ORS

  • RS和ORS默认是换行(’\n’)
  • FS和OFS默认是空白符

这地方要注意,我们常用-F来制定输入的域分隔符,却忘记了制定输出的域分隔符,而导致经常是输入是TAB分割,保存后的文本变成了空白符分割。

通过为输入的分隔符变量制定相应分割方式,来更好的处理文本,而输出的分隔符变量则可以让我们在保存处理后的数据时更加灵活。


awk -F "\t" '{OFS="\t"} {if ($4==3) $4=5}1' test.txt


上述命令指定输入分隔符为TAB,如果第4个字段为3,则将其替换为5,然后打印出来({}后跟1表示打印),打印的域分隔符为TAB

目录
相关文章
|
Shell Python Perl
awk 简单使用教程(二)
awk 简单使用教程(二)
120 1
|
Java Linux Perl
Linux命令awk的简单使用
Linux命令awk的简单使用
115 0
Linux命令awk的简单使用
|
存储 机器学习/深度学习 Unix
sed 和 awk 使用方法 | 学习笔记
快速学习 sed 和 awk 使用方法。
152 0
|
Shell Perl 存储
sed入门详解教程
sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义。
1141 0
|
Linux Perl Java
5分钟入门AWK
AWK是Linux上卓越的文本处理工具,它具有非常简单的语法结构,拥有强大的文本处理能力。AWK 是一种解释执行的编程语言,AWK 的名称是由它们设计者的名字缩写而来 —— Afred Aho, Peter Weinberger 与 Brian Kernighan。
1950 0
|
Unix Shell BI
awk 手册
1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l        awk 适于解决哪些问题 ? l        awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模式及特性, 本手册系由一些较具代表性的范例及其题解所构成; 各范例由浅入深, 彼此间相互连贯,范例中并对所使用的awk语法及指令辅以必要的说明.
1140 0
|
Web App开发 人工智能 Shell