Linux命令之王——awk和sort的妙用

awk和sort两个命令是非常重要且常用的。我们可以使用以下命令输出文件中所有行的行号及字段个数:下面是sort命令的基本语法:如果我们想要对该文件进行升序排列。

在Linux系统中,有许多强大的命令可以协助我们完成各种任务。其中,awk和sort两个命令是非常重要且常用的。本文将为大家介绍这两个命令的基本语法以及它们在实际应用中的妙用。

1. awk

awk是一种文本处理工具,可以对文件进行分析、过滤、格式化等操作。它逐行扫描文件,并对每行进行处理。下面是awk命令的基本语法:

“`

awk ‘pattern {action}’ file

其中pattern表示匹配模式,可以使用正则表达式;action表示执行动作,可以是打印、计算等操作;file表示待处理的文件名。

例如,我们有一个名为data.txt的文件包含以下内容:

Tom 90

Jerry 80

Lily 95

Lucy 85

Bob 75

如果我们想要输出成绩大于等于90分的同学姓名和成绩,则可以使用如下命令:

awk ‘$2>=90 {print $1,$2}’ data.txt

输出结果如下:

以上命令中$1代表第一个字段(即姓名),$2代表第二个字段(即成绩)。

除了基本语法外,还有一些常用的内置变量和函数,如下所示:

– NR:表示当前处理的行号

– NF:表示当前行中字段的个数

– $0:表示整行内容

– $n:表示第n个字段

例如,我们可以使用以下命令输出文件中所有行的行号及字段个数:

awk ‘{print NR,NF,$0}’ data.txt

1 2 Tom 90

2 2 Jerry 80

3 2 Lily 95

4 2 Lucy 85

5 2 Bob 75

2. sort

sort是一种排序工具,可以对文本文件进行排序。它支持多种排序算法,并且可以按照不同规则进行排序。下面是sort命令的基本语法:

sort [option] file

其中option为可选参数,用于指定排序规则等信息;file为待处理文件名。

例如,我们有一个名为numbers.txt的文件包含以下内容:

10,20,30,40,50

50,40,30,20,10

Linux命令之王——awk和sort的妙用

15,25,35,45

45,35,25

55

5,

如果我们想要对该文件进行升序排列,则可以使用如下命令:

sort -t ‘,’ -k1n numbers.txt

其中-t ‘,’表示以逗号作为分隔符(默认为空格),-k1n表示按照第一列(即第一个数字)进行升序排列。

“`

10 ,20,30,40,50

15 ,25,35,45

45 ,35,25

50 ,40,30,20,10

55

除了基本语法外,还有一些常用的option参数,如下所示:

– -t:指定分隔符

– -k:指定排序列和类型(n表示按照数字进行排序)

– -r:倒序排列

– -u:去重

例如,我们可以使用以下命令输出文件中所有不重复的行:

sort -u data.txt

3. awk和sort的妙用

awk和sort两个命令都非常强大,并且可以结合使用实现更多功能。例如,我们有一个名为log.txt的文件包含以下内容:

2021/01/01 12:00:00 info start program

2021/01/01 12:05:00 debug do something

2021/01/01 12:10:00 error something wrong

2021/01/02 13:00:00 info start program

2021/01/02 13:05:00 debug do something

2021/01/02 13:10:00 error something wrong

如果我们想要统计每天出现错误信息的次数,则可以使用如下命令:

awk ‘/error/{print $1}’ log.txt | sort | uniq -c

以上命令中,首先使用awk过滤出包含error关键字的行,并且只输出日期部分;然后通过sort排序;最后通过uniq统计每个日期出现的次数。

1 2021/01/01

1 2021/01/02

本文介绍了Linux系统中两个重要的命令——awk和sort,并且演示了它们在实际应用中的妙用。通过学习这两个命令,我们可以更加高效地处理文本文件,提高工作效率。