awk命令的用法
Linux命令高级技巧使用awk命令进行文本处理和数据提取

Linux命令高级技巧使用awk命令进行文本处理和数据提取Linux命令高级技巧:使用awk命令进行文本处理和数据提取在Linux系统中,awk是一种强大的文本处理工具,它可以用于处理数据文件、生成报表以及提取文本中的特定信息。
awk命令的灵活和高效使得它成为Linux用户必备的工具之一。
本文将介绍awk命令的基本用法和高级技巧,帮助读者更好地利用awk进行文本处理和数据提取。
1. awk命令基本语法和工作原理awk命令的基本语法为:```awk 'pattern { action }' filename```其中,pattern是用于匹配文本的模式,action是在匹配成功后执行的操作。
awk处理文本的方式是逐行读取文件,按照指定的模式进行匹配,并执行相应的操作。
操作可以是打印、计算、替换等。
下面是一个简单的示例:```awk '/keyword/ { print $1 }' filename```该命令表示在filename文件中匹配包含关键字"keyword"的行,并打印每行的第一个字段。
2. 使用awk命令进行文本处理awk命令在文本处理方面有着广泛的应用。
它可以对文本进行排序、过滤、计算和格式化等操作。
下面介绍几个常用的awk命令技巧。
2.1 文本过滤和匹配通过awk命令可以方便地对文本进行过滤和匹配。
例如,要过滤出包含特定关键字的行,可以使用如下命令:```awk '/keyword/' filename```该命令将输出filename文件中所有包含关键字"keyword"的行。
2.2 提取字段awk命令可以提取文本中的指定字段。
字段之间以空格或制表符分隔,默认情况下,awk将每行数据的第一个字段标记为$1,第二个字段标记为$2,依此类推。
例如,要提取文件中的第二个字段,可以使用如下命令:```awk '{ print $2 }' filename```该命令将输出filename文件中每一行的第二个字段。
df -h和awk的用法

df -h和awk的用法
df命令用于显示磁盘空间利用情况,而-h参数则会以人类可读
的方式显示结果,即将字节转换为更大的单位(如KB、MB、GB等)。
因此,执行df -h命令会列出系统中所有挂载的文件系统以及它们
的磁盘空间利用情况。
而awk是一种用于文本处理和分析的强大工具,它可以根据指
定的规则从文本文件中提取数据并对数据进行处理。
在结合df命令
使用时,可以使用awk来进一步处理df命令的输出,以便提取特定
的信息或进行格式化输出。
举例来说,如果我们想要列出文件系统的名称和利用率,我们
可以使用以下命令:
df -h | awk '{print $1, $5}'。
这条命令中,df -h用于显示文件系统的磁盘空间利用情况,
并将结果通过管道传递给awk命令。
在awk命令中,'{print $1, $5}'指定了打印输出的格式,$1表示第一个字段(文件系统的名称),$5表示第五个字段(磁盘利用率)。
这样,我们就可以得到
文件系统名称和对应的利用率信息。
另外,awk还可以进行更复杂的文本处理,比如进行条件判断、循环处理等。
它的灵活性使得它在处理文本数据时非常实用。
综上所述,df -h命令用于显示磁盘空间利用情况,而awk命
令可以对df命令的输出进行进一步处理,提取所需信息或进行格式
化输出,是一种非常实用的文本处理工具。
awk 文件比对用法

awk 文件比对用法摘要:一、awk 简介二、awk 文件比对用法1.基本用法2.示例三、awk 文件比对应用场景四、总结正文:awk 是一种文本处理工具,广泛应用于Linux 和Unix 系统,它允许用户在文本文件中执行模式扫描和处理。
awk 具有简洁、高效的文本处理能力,被广泛应用于数据挖掘、文本分析等领域。
一、awk 简介awk 是一种文本处理工具,全称"Advanced Text Processor",它使用文本模式匹配和处理技术,可以对文本文件进行快速扫描和处理。
awk 具有强大的文本处理能力,支持正则表达式、数学运算、逻辑运算等。
二、awk 文件比对用法1.基本用法awk 文件比对的基本用法是通过awk 命令,按照指定的规则对两个或多个文件进行比较。
常用的比对规则包括:等于($0 ==)、不等于($0 !=)、大于($0 >)、小于($0 <)等。
```awk "$0 == "file1" {print "file1 found"; nextfile}" file1 file2```该示例命令会比较file1 和file2 两个文件,如果file1 中的内容与"file1"相等,则输出"file1 found",然后跳过当前文件,继续处理下一个文件。
2.示例假设我们有两个文件file1 和file2,我们需要找出这两个文件中不同的行。
可以使用以下awk 命令:```awk -v file1="file1" -v file2="file2" "$0 != ENVIRON["file1"] && $0 != ENVIRON["file2"] {print $0}"```该命令通过ENVIRON 环境变量存储两个文件的名称,然后使用awk 命令比较每一行,如果当前行既不等于file1,也不等于file2,则输出该行。
linux根据关键字提取内容的命令

linux根据关键字提取内容的命令在Linux中,可以使用一些命令来根据关键字提取内容。
下面将介绍一些常用的命令和它们的用法。
1. grep命令:grep命令用于在文件中搜索匹配指定模式的行,并将其输出。
它的基本语法如下:```grep [选项] 模式文件名```其中,选项可以是:- `-i`:忽略大小写- `-v`:反向匹配,输出不包含模式的行- `-r`:递归搜索子目录- `-l`:只输出包含模式的文件名例如,要在文件example.txt中搜索包含关键字"hello"的行,可以使用以下命令:```grep "hello" example.txt```2. awk命令:awk是一种处理文本文件的强大工具,可以根据指定的模式提取内容。
它的基本语法如下:```awk '/模式/ {操作}' 文件名```其中,模式可以是正则表达式,操作可以是打印行、计算、替例如,要在文件example.txt中提取包含关键字"hello"的行,可以使用以下命令:```awk '/hello/ {print}' example.txt```3. sed命令:sed是一种流编辑器,可以根据指定的规则对文本进行编辑和转换。
它的基本语法如下:```sed 's/模式/替换/g' 文件名```其中,模式可以是正则表达式,替换可以是字符串或其他操作。
例如,要将文件example.txt中的关键字"hello"替换为"world",可以使用以下命令:```sed 's/hello/world/g' example.txt```4. find命令:find命令用于在指定目录下搜索文件和目录,并执行指定的操作。
它的基本语法如下:```find 目录 -name 文件名 -exec 命令 {} \;```其中,目录是搜索的起始目录,文件名可以是通配符,命令是要执行的操作。
awk 文件比对用法

awk 文件比对用法摘要:1.简介2.awk 命令基本用法3.awk 文件比对用法a.语法b.示例4.结论正文:awk 是一种文本处理工具,广泛应用于Linux 和Unix 系统。
它通过正则表达式匹配文本行,然后根据规则对匹配的行执行相应的操作。
awk 具有强大的功能,可以进行简单的文本处理任务,如分割、合并、过滤和排序等。
awk 命令的基本用法如下:```awk [选项] "pattern {action}" input_file```其中,`pattern`是正则表达式,用于匹配输入文件的文本行;`action`是针对匹配行的操作,可以是一条命令或多个命令组成的命令序列;`input_file`是输入文件。
在本文中,我们将重点介绍awk 文件的比对用法。
awk 文件比对主要用于比较两个或多个文本文件之间的差异。
它的语法如下:awk "FNR==NR {a[$0]; next} !($0 in a)" file1 file2```这个命令的原理是:首先读取第一个文件(file1),将每行文本存储在名为$0的数组中。
当读取第二个文件(file2)时,awk 会逐行比较新读取的文本行是否存在于数组中。
如果不存在,说明这是新的一行,将这一行添加到数组中。
这样,我们就可以得到两个文件之间的不同行。
下面是一个示例:假设我们有两个文件file1 和file2,它们的文本内容如下:file1:applebananaorangefile2:applebananapear我们使用awk 命令比较这两个文件:```awk "FNR==NR {a[$0]; next} !($0 in a)" file1 file2```输出结果如下:pear```这个命令告诉我们,file2 中存在file1 不包含的行,即“pear”。
总之,awk 文件比对用法是一种强大的文本比较工具。
Mac命令行数据处理技巧使用AWK和SED进行文本处理

Mac命令行数据处理技巧使用AWK和SED进行文本处理在使用Mac命令行进行数据处理时,AWK和SED是两个非常强大和常用的工具。
它们可以帮助我们快速有效地处理文本数据,提取需要的信息,并对数据进行格式化和转换。
本文将介绍AWK和SED的基本用法和常见技巧,以帮助读者更好地利用这两个工具进行文本处理。
一、AWK的基本用法AWK是一种用于处理和分析文本数据的编程语言。
它提供了强大的文本处理能力,并且非常灵活易用。
下面是AWK的基本用法及常见技巧:1. 提取指定列的数据使用AWK我们可以轻松地提取指定列的数据。
例如,如果我们有一个csv文件,其中包含姓名、年龄和性别信息,我们可以使用以下命令提取出姓名列的数据:```awk -F ',' '{print $1}' file.csv```上述命令中,-F参数指定了字段分隔符为逗号(,),而$1表示第一个列。
通过这个命令,我们可以打印出csv文件中所有行的第一列数据。
2. 利用条件过滤数据AWK还可以根据条件过滤数据。
例如,我们可以使用以下命令过滤出年龄大于等于18岁的人的数据:```awk -F ',' '$2 >= 18 {print $0}' file.csv```上述命令中,$2表示第二列,$0表示整行数据。
通过这个命令,我们可以打印出csv文件中所有年龄大于等于18岁的人的数据。
3. 计算列的和、平均值等统计信息使用AWK,我们可以很方便地计算列的和、平均值等统计信息。
例如,我们可以使用以下命令计算csv文件中年龄列的平均值:```awk -F ',' '{sum += $2; count++} END {print sum/count}' file.csv```上述命令中,sum和count是AWK的变量,分别用于累加和计数。
通过这个命令,我们可以打印出csv文件中年龄列的平均值。
Linux Shell中awk命令的用法
Linux Shell中awk命令的用法awk命令awk也是一个数据处理工具!相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个字段来处理。
.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。
有三种方式调用awk1.命令行方式awk [-F field-separator] 'commands' input-files其中,[-F域分隔符]是可选的,因为awk使用空格或tab键作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项,如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明-F选项,如:awk -F: 'commands' input-file。
注:在linux系统中用环境变量IFS存储分隔符,但根据实际应用也可以改变IFS的值.例如:脚本执行结果如下:commands 是真正awk命令, input-files 是待处理的文件。
iput_files可以是多于一个文件的文件列表,awk将按顺序处理列表中的每个文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。
通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格或tab键。
2.shell脚本方式将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh可以换成:#!/bin/awk3.将所有的awk命令插入一个单独文件,然后调用:Awk -f awk-script-file input-files其中,-f选项加载awk-script-file中的awk脚本,input-files跟上面的是一样的。
awk的模式和动作任何awk语句都由模式和动作组成(awk_pattern { actions })。
awk命令用法案例
awk命令用法案例什么是awk命令?awk命令是在Unix和Linux操作系统中广泛使用的文本处理工具。
它的名字来源于创建它的三位创始人的姓氏:Alfred Aho、Peter Weinberger 和Brian Kernighan。
awk命令是一种强大的处理器,可以从文本文件中提取和操作数据,并根据用户定义的条件生成报告。
awk命令的用法可以简单概括为以下几个步骤:1. 指定输入文件:awk命令通常需要一个输入文件,它会从该文件中读取数据并进行处理。
输入文件可以由用户指定,也可以直接从标准输入读取。
在命令中使用"awk '...'"的形式,其中"..."是所述的模式和动作的命令块。
2. 定义模式:awk命令根据用户指定的模式来选择要处理的数据。
模式可以是简单的字符串匹配,也可以是正则表达式。
用户可以使用模式进行数据过滤,只处理满足条件的行或字段。
3. 定义动作:当模式与数据匹配时,awk命令会执行用户定义的动作。
动作可以是打印数据、进行计算、修改数据等等。
用户可以根据需要定义一个或多个动作,用来处理选择的数据。
4. 执行命令:执行awk命令时,它会按照用户定义的模式和动作来处理输入文件中的数据。
根据匹配的模式和执行的动作,awk命令会生成相应的输出结果。
以下是一个使用awk命令处理文本数据的简单案例:假设我们有一个数据文件data.txt,内容如下:Name, Age, GenderJohn, 25, MaleJane, 30, FemaleMike, 35, Male我们想要提取出所有年龄大于等于30岁的人的姓名和性别。
我们可以使用以下命令完成这个任务:bashawk -F ", " '{if (2>=30) {print 1, 3}}' data.txt解析以上命令:- 选项-F ", "指定了字段分隔符为逗号加空格;- 花括号{}中的if条件语句判断第二个字段的值是否大于等于30,如果是则执行花括号中的动作;- 动作中的print命令打印出第一个字段和第三个字段,即姓名和性别。
使用awk和sed的组合技巧Linux命令高级文本处理
使用awk和sed的组合技巧Linux命令高级文本处理在Linux系统中,awk和sed是两个非常强大的命令行工具,它们可以用来处理文本文件,提取数据,进行搜索替换等操作。
本文将介绍一些使用awk和sed的组合技巧,帮助你更好地进行高级文本处理。
1. 使用awk进行字段提取和处理awk是一个强大的文本处理工具,可以根据字段来进行数据提取和处理。
下面是一些常用的awk命令和技巧:- 提取指定字段:使用awk '{print $n}'命令可以提取每一行的第n个字段。
例如,要提取第2个字段,可以使用awk '{print $2}' filename命令。
- 计算字段和:使用awk '{sum+=$1} END {print sum}'命令可以计算所有行的第一个字段的和。
例如,要计算文件中第一列的总和,可以使用awk '{sum+=$1} END {print sum}' filename命令。
- 根据指定条件过滤行:使用awk '/pattern/'命令可以根据指定的模式来过滤行。
例如,要显示包含特定关键词的行,可以使用awk'/keyword/' filename命令。
2. 使用sed进行文本替换和编辑sed是一个流式文本编辑器,可以进行全局搜索和替换操作。
下面是一些常用的sed命令和技巧:- 替换文本:使用sed 's/old/new/'命令可以将文本中的某个字符串替换为新的字符串。
例如,要将文件中的"foo"替换为"bar",可以使用sed 's/foo/bar/' filename命令。
- 删除行:使用sed '/pattern/d'命令可以删除匹配指定模式的行。
例如,要删除包含关键词的行,可以使用sed '/keyword/d' filename命令。
linux编辑文本的命令
linux编辑文本的命令Linux 是一种广泛使用的操作系统,它提供了许多强大的命令来编辑文本。
本文将介绍几个常用的 Linux 文本编辑命令,包括 vi、sed 和awk,并说明它们的功能和用法。
1. vi 命令vi 是一种强大的文本编辑器,几乎在所有的Linux 发行版中都预装了。
要使用 vi 命令编辑文本文件,只需在终端中输入以下命令:vi filename其中,filename 是要编辑的文件名。
在vi 编辑器中,可以使用各种命令来插入、删除、复制和保存文本。
例如,要插入文本,可以按下i 键进入插入模式,然后输入要插入的文本。
要保存并退出vi,可以按下 Esc 键退出插入模式,然后输入 :wq 并按下回车键。
2. sed 命令sed 是一种流式文本编辑器,它可以根据指定的规则对文本进行修改。
要使用 sed 命令编辑文本文件,可以在终端中输入以下命令:sed 's/old/new/g' filename其中,old 是要替换的字符串,new 是替换后的字符串,filename 是要编辑的文件名。
sed 命令将会将文件中所有出现的 old 字符串替换为 new 字符串并输出结果。
3. awk 命令awk 是一种功能强大的文本处理工具,它可以对文本进行操作并生成报告。
要使用awk 命令编辑文本文件,可以在终端中输入以下命令:awk '{print $1}' filename其中,$1 表示文本文件中的第一个字段,filename 是要编辑的文件名。
awk 命令将会输出文件中所有行的第一个字段。
除了这些常用的文本编辑命令外,Linux 还提供了许多其他命令,如grep、cut 和 sort,它们也可以用于文本处理和编辑。
在实际使用这些命令时,我们可以通过结合使用它们来实现更复杂的文本编辑操作。
例如,可以使用grep 命令查找特定的文本行,然后使用sed 命令替换其中的内容,最后使用awk 命令对结果进行进一步处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是AWK 的GNU 版本。
awk其名称得自于它的创始人Alfred Aho 、Peter Weinberger 和Brian Kernighan 姓氏的首个字母。
实际上AWK 的确拥有自己的语言:AWK 程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。
它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
使用方法awk '{pattern + action}' {filenames}尽管操作可能会很复杂,但语法总是这样,其中pattern 表示AWK 在数据中查找的内容,而action 是在找到匹配内容时所执行的一系列命令。
花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。
完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。
awk每接收文件的一行,然后执行相应的命令,来处理文本。
调用awk有三种方式调用awk1.命令行方式awk [-F field-separator] 'commands' input-file(s)其中,commands 是真正awk命令,[-F域分隔符]是可选的。
input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。
通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
2.shell脚本方式将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh可以换成:#!/bin/awk3.将所有的awk命令插入一个单独文件,然后调用:awk -f awk-script-file input-file(s)其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。
本章重点介绍命令行方式。
入门实例假设last -n 5的输出如下[root@www ~]# last -n 5 <==仅取出前五行root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged inroot pts/1 192.168.1.100 Tue Feb 10 00:46 - 02:28 (01:41)root pts/1 192.168.1.100 Mon Feb 9 11:41 - 18:30 (06:48)dmtsai pts/1 192.168.1.100 Mon Feb 9 11:41 - 11:41 (00:00)root tty1 Fri Sep 5 14:09 - 14:10 (00:01)如果只是显示最近登录的5个帐号#last -n 5 | awk '{print $1}'rootrootrootdmtsairootawk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。
默认域分隔符是"空白键" 或"[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。
如果只是显示/etc/passwd的账户#cat /etc/passwd |awk -F ':' '{print $1}'rootdaemonbinsys这种是awk+action的示例,每行都会执行action{print $1}。
-F指定域分隔符为':'。
如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割#cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'root /bin/bashdaemon /bin/shbin /bin/shsys /bin/sh如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'name,shellroot,/bin/bashdaemon,/bin/shbin,/bin/shsys,/bin/sh....blue,/bin/noshawk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。
接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。
搜索/etc/passwd有root关键字的所有行#awk -F: '/root/' /etc/passwdroot:x:0:0:root:/root:/bin/bash这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。
搜索支持正则,例如找root开头的: awk -F: '/^root/' /etc/passwd搜索/etc/passwd有root关键字的所有行,并显示对应的shell# awk -F: '/root/{print $7}' /etc/passwd/bin/bash这里指定了action{print $7}awk内置变量awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
ARGC 命令行参数个数ARGV 命令行参数排列ENVIRON 支持队列中系统环境变量的使用FILENAME awk浏览的文件名FNR 浏览文件的记录数FS 设置输入域分隔符,等价于命令行-F选项NF 浏览记录的域的个数NR 已读的记录数OFS 输出域分隔符ORS 输出记录分隔符RS 控制记录分隔符此外,$0变量是指整条记录。
$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
统计/etc/passwd:文件名,每行的行号,每行的列数,对应的完整行内容:#awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwdfilename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin /shfilename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh使用printf替代print,可以让代码更加简洁,易读awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}'/etc/passwdprint和printfawk中同时提供了print和printf两种打印输出的函数。
其中print函数的参数可以是变量、数值或者字符串。
字符串必须用双引号引用,参数用逗号分隔。
如果没有逗号,参数就串联在一起而无法区分。
这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。
awk编程变量和赋值除了awk的内置变量,awk还可以自定义变量。
下面统计/etc/passwd的账户人数awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwdroot:x:0:0:root:/root:/bin/bash......user count is 40count是自定义变量。
之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。
这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd[start]user count is 0root:x:0:0:root:/root:/bin/bash...[end]user count is 40统计某个文件夹下的文件占用的字节数ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'[end]size is 8657198如果以M为单位显示:ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}' [end]size is 8.25889 M注意,统计不包括文件夹的子目录。