分类汇总:
| awk '{print $6}' | sort | uniq -c | sort -rn
awk 里面的like $0 ~ /^$/ 空格
awk 里面的like $0 ~ /^ shixm / 空格 like shixm*
awk 里面的like $0 ~ /^$shixm / 空格 like shixm (绝对匹配)
awk NF 去除空行
-----------------sort-------------
-n 以数字方式排序
(+|-)n以n个分隔符开始(+n)、结束(-n)的域排序
-r 反向排序
-f 忽略大小写
+nM 排列域的前三个字符作为缩写的月份名称
-d 排列目录顺序,只考虑字母、数字和空格。其他字符忽略(-D大写,显示全部重复的行)
-o filename输出结果到指定filename文件中
-b 在限定起始和结束排序域时忽略开头的空格字符
-t char使用char字符作为域分隔符,如果没有指定该参数,则使用空格字符作为默认参数
$ ls -ld f* > list
-----------------sort-------------
-----------------uniq-------------
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。(大写-D显示重复出现的所有行)
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
[输入文件] 指定已排序好的文本文件。
[输出文件] 指定输出的文件。
uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次!
-----------------uniq-------------
------------diff--------------
在上述形式的每一行的后面跟随受到影响的若干行,以“<”打头的行属于第一个文件,以“>”打头的行属于第二个文件。
------------diff--------------
awk ' NR < 11 '如前所述,这里省略了动作,即为打印输出。匹配模式是变量NR需要小于11,NR即为当前的行号。这个写法很简单,但是有一个问题,在NR大于10的时候,awk其实还是对每行进行了判断,如果文件很大,比如说有上万行,浪费的时间是无法忽略的。所以,更好的写法是
awk '1; NR = 10 { exit }'第一句对当前行进行输出。第二句判断是不是已经到了第10行,如果是则退出。
输出文件的第一行(模拟 head -n 1 )
awk 'NR > 1 { exit }; 1'这个例子与前一个很相似,中心思想就是第二行就退出。
输出文件的最后两行(模拟 tail -n 2 )
awk '{ y=x "\n" $0; x=$0}; END { print y }'的确,这一句看起来确实有些别扭。第一句总是把一个在当前行前面再加上变量x的内容赋值给y,然后用x记录当前行内容。这样的效果是y的内容始终是上一行加上当前行的内容。在最后,输出y的内容。如果仔细看的话,不难发现这个写法是很不高效的,因为它不停的进行赋值和字符串连接,只为了找到最后一行!所以,如果你想要输出文件的最后两行,tail -n 2是最好的选择。
输出文件的最后一行(模拟 tail -n 1 )
awk 'END { print }'句法方面没什么好说的,print省略参数即是等价于print $0。但是这个语句可能不能被非GNU awk的某些awk版本正常执行,如果为了兼容,下面的写法是最安全的:
awk '{ rec = $0 }; END { print rec }'输出只匹配某些模式的行(模拟 grep )
awk '/regex/'似乎没什么好说的了。
输出不匹配某些模式的行(模拟 grep -v )
awk '!/regex/'匹配模式前加“!”就是否定判断结果。
输出匹配模式的行的上一行,而非当前行
awk '/regex/ { print x }; { x = $0 }'变量x总是用来记录上一行的内容,如果模式匹配了当前行,则输出x的内容。
输出匹配模式的下一行
awk '/regex/ { getline; print }'这里使用了getline函数取得下一行的内容并输出。getline的作用是将$0的内容置为下一行的内容,并同时更新NR,NF,FNR变量。如果匹配的是最后一行,getline会出错,$0不会被更新,最后一行会被打印。
输出匹配AA或者BB或者CC的行
awk '/AA|BB|CC/'没什么好说的,正则表达式。如果有看不懂的朋友,请自行学习正则表达式。
输出长过65个字符的行
awk 'length > 64'length([str])返回字符串的长度,如果参数省略,即是以$0作为参数,括号也可以省略了。
输出短于65个字符的行
awk 'length < 65'和上例基本一样。
输出从匹配行到最后一样的内容
awk '/regex/,0'这里使用了“pattern1,pattern2”的形式来指定一个匹配的范围,其中pattern2这里为0,也就是false,所以一直会匹配到文件结束。
从第8行输出到第12行
awk 'NR==8,NR==12'同上例,这也是个范围匹配。
输出第52行
awk 'NR==52'如果想要少执行些不必要的循环,就这样写:
awk 'NR==52 {print;exit}'输出两次正则表达式匹配之间的行
awk '/regex1/, /regex2/'删除所有的空行
awk NFNF为真即是非空行。另外一种写法是用正则表达式:
awk '/./'
分享到:
相关推荐
### awk教程知识点详解 #### 一、awk简介 - **定义**:`awk`是一种用于文本数据处理的强大工具,属于解释型编程语言。 - **用途**:主要用于数据分析、报告生成等场景,尤其适用于处理结构化的文本文件。 #### 二...
AWK是一种强大的文本分析工具,尤其在处理结构化数据文件时效率极高。它以其独特的模式匹配和编程能力,被广泛应用于系统管理和数据分析中。以下是对标题和描述中提及的AWK学习知识点的详细阐述: 1. **AWK的定义**...
`awk` 是一种强大的文本分析工具,常用于处理和解析结构化的文本文件,如日志文件、配置文件等。在Linux和Unix系统中,`awk` 提供了一种灵活的方式来提取、过滤和处理数据。本篇文章将深入讲解 `awk` 的基本用法和...
Linux中的`awk`是一个强大的文本分析工具,由Alfred Aho、Brian Kernighan和Peter Weinberger三位开发者创建,因此得名。`awk`的主要功能是处理文本和数据,通过匹配特定模式对文件中的行进行操作。在Linux系统中,...
笔记 由于功能和内置的strtonum ,这需要gawk 由于awks都无法读取二进制文件,因此您首先需要通过hexdump传递类文件 示例(请参见run.sh): javac Add.java && hexdump -v -e '/1 "u "' Add.class | awk -f jvm....
本笔记主要涵盖了AWK的基础知识和高级特性,旨在帮助读者理解和掌握这一实用工具。 **一.1 什么是AWK?** AWK是由Aho、Weinberger和Kernighan三位计算机科学家开发的,它的名字就是由他们的姓氏首字母组成的。AWK是...
最后,附录部分提供了关于awk语言演变的资料、gawk的安装指南、实现笔记和基本编程概念的简要介绍。这些附录为读者提供了深入理解和使用awk所需的额外信息。 总而言之,《GAWK: Effective AWK Programming - GNU ...
AWK是一种编程语言,用于在Linux环境下对文本和数据进行处理和分析。它是许多UNIX系统中的标准工具,并且是文本处理的强大工具。AWK通过模式匹配来处理文本文件,其中可以指定一系列规则,称为模式和动作,来对输入...
本笔记将详细介绍AWK的基本概念、语法、命令选项以及常用的特性。 ### 1. AWK简介 AWK是由三位开发者的首字母命名的——Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan。它是一种内置了多种功能的语言,...
### PDF电子书《Awk学习笔记2010修改版》相关知识点 #### AWK简介 AWK是一种强大的脚本语言,由Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan在1977年设计并实现。这三位计算机科学家的名字首字母合成了...
**awk学习笔记与实例解析** awk 是一种强大的文本分析工具,尤其在Linux和Unix系统中广泛使用。它允许用户通过模式匹配和处理规则对输入数据进行操作,特别适合于处理结构化的文本文件,如日志文件、配置文件等。本...
awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和 动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。...
### awk学习笔记精要 #### 1. awk简介 awk是一种功能强大的文本处理语言,主要用于在Linux/Unix环境中处理文本和数据。它能够从标准输入、文件或其它命令的输出中提取并处理数据,支持自定义函数和动态正则表达式...
`Awk` 是一个强大的文本分析工具,常用于处理结构化的数据文件,如CSV或TSV格式。在Unix和Linux环境中,它被广泛应用于数据处理和报告生成。下面将详细介绍`Awk`的一些核心概念和功能。 1. **awk 语法**: `Awk`...
awk是一种强大的文本分析工具,广泛应用于Linux和Unix系统中。它的名字来源于三位创始人Alfred Aho、Brian Kernighan和Peter Weinberger的首字母。awk能够处理文本文件、标准输入和其他命令的输出,通过匹配特定模式...
sed与awk(第二版)学习笔记
awk学习笔记,介绍所有awk命令,和具体用法
### awk学习使用笔记及举例 #### 1. awk简介 awk是一种专为文本处理而设计的编程语言,常用于Linux/Unix环境下。它可以处理来自标准输入、文件或其它命令输出的数据。awk支持用户自定义函数和动态正则表达式等功能...