linux awk 命令

在 linux 系统中,有三个强大的文本分析处理工具:grep  sed  awk,其中 grep 主要用于搜索文本中的内容, sed 用于编辑,而 awk 主要用于处理和生成报表。

awk 的工作原理是将文件中的内容逐行读入,然后以空格为分隔符将这一行数据切分成几列,再对每列的元素进行各种分析处理。

下面结合实例简单介绍 awk 命令常用的几种格式:

假设文件 form.txt 中有如下内容:

Num  Name  Company  Product
1    Jobs  Apple    iPhone
2    Jack  Alibaba  taobao
3    Pony  Tencent  wechat

1. 打印第二列和第三列:

awk  '{print $2 $3}'  form.txt
>> NameCompany JobsApple JackAlibaba PonyTencent

可以看到第二列和第三列就打印出来了,但是两列数据紧贴在一起,如果我们希望以制表符来分隔开:

awk  '{print $2"\t"$3}'  form.txt
>> Name Company Jobs Apple Jack Alibaba Pony Tencent

 

2. 打印出第 2,3,4 行的第二列和第三列,以制表符分隔开:

awk  '/^[0-9]/{print $2"\t"$3}'  form.txt
>>
Jobs    Apple
Jack    Alibaba
Pony    Tencent

这里用到了 awk 的一种常用语法:  awk  ‘ 样式{命令}’  file 

表示从文件 file 中取出那些符合 “样式” 的行,然后对这些行执行{命令}

所以上面这个例子就表示:取出那些以数字开头的行,打印这些行的第二列和第三列,以制表符分隔开

 

3. 打印出前三行的第二列:

awk  '{ if (NR<=3)  {print $2"\t"$3} }'  form.txt
>>
Name    Company
Jobs    Apple
Jack    Alibaba

 这里用到了 awk 编程,在花括号内写了一小段程序,awk 编程基本都是借鉴 C 语言,所以 C 语言中常见的

 

 

 

 

 

 

|------------------------------------------|

 

上一篇:8.4贪心策略例题:区间调度问题


下一篇:基于GITHUB ACTION的定时任务,真香!