wk[ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
awk -F: '$1~/\<12345\>/{print}' abc.txt
参数说明:
1)-F re:允许awk更改其字段分隔符。
2)parameter: 该参数帮助为不同的变量赋值。
3)'prog':awk的程序语句段。这个语句段必须用单引号:'和'括起,以防被shell解释。这个程序语句段的标准形式为:
'pattern{action}'其中pattern参数可以是egrep正则表达式中的任何一个,用//包括
,action参数总是被大括号包围,它由一系统awk语句组成,各语句之间用";"分隔。
awk用$0表示整个行(记录)。系统默认的分隔符是空格。awk允许在命令行中用-F re的形式来改变这个分隔符。事实上,awk用一个内置的变量FS来记忆这个分隔符。
例:显示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段:
$awk -F % 'NR==7,NR==15{printf $1 $3 $7}' myfile
$awk'/[Ss]un/, /[Mm]oon/{print}'myfile
它将显示第一个匹配Sun或sun的行与第一个匹配Moon或moon的行之间的行(注意:!!),并显示到标准输出上。
例:下面的示例显示了内置变量和内置函数length()的使用:
$awk'length($0)>80{print NR}' myfile
例:作为一个较为实际的例子,我们假设要对UNIX中的用户进行安全性检查,方法是考察/etc下的passwd文件,检查其中的passwd字段(第二字段)是否为"*",如不为"*",则表示该用户没有设置密码,显示出这些用户名(第一字段)。我们可以用如下语句实现:
#awk-F: '$2=="\*"{printf("%s no password!\n",$1}' /etc/passwd
awk中允许进行多种测试,如常用的==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、>=(小于等于)等等,同时,作为样式匹配,还提供了~(匹配于)和!~(不匹配于)判断。
在awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):
$awk
>'BEGIN{ FS=":";print "统计销售金额";total=0}
>{print$3;total=total+$3;}
>END{printf "销售金额总计:%.2f",total}' sx
(注:>是shell提供的第二提示符,如要在shell程序awk语句和awk语言中换行,则需在行尾加反斜杠)
^在字符串的开头开始匹配
$在字符串的结尾开始匹配
.与任何单个字符串匹配
[ABC]与[]内的任一字符匹配
[A-Ca-c]与A-C及a-c范围内的字符匹配(按字母表顺序)
[^ABC]与除[]内的所有字符以外的任一字符匹配
Desk|Chair与Desk和Chair中的任一个匹配
[ABC][DEF]关联。与A、B、C中的任一字符匹配,且其后要跟D、E、F中的任一个字符。
*与A、B或C中任一个出现0次或多次的字符相匹配
+与A、B或C中任何一个出现1次或多次的字符相匹配
?与一个空串或A、B或C在任何一个字符相匹配
(Blue|Black)berry合并常规表达式,与Blueberry或Blackberry相匹配
\{\}
\<\>
\(\)
awk的内置函数
函数用途或返回值
------------------------------------------------
gsub(reg,string,target)每次常规表达式reg匹配时替换target中的string
index(search,string)返回string中search串的位置
length(string)求串string中的字符个数
match(string,reg)返回常规表达式reg匹配的string中的位置
printf(format,variable)格式化输出,按format提供的格式输出变量variable。
split(string,store,delim)根据分界符delim,分解string为store的数组元素
sprintf(format,variable)返回一个包含基于format的格式化数据,variables是要放到串中的数据
strftime(format,timestamp)返回一个基于format的日期或者时间串,timestmp是systime()函数返回的时间
sub(reg,string,target)第一次当常规表达式reg匹配,替换target串中的字符串
substr(string,position,len)返回一个以position开始len个字符的子串
tolower(string)返回string中对应的小写字符
toupper(string)返回string中对应的大写字符
srand(x)初始化随机数发生器。如果忽略x,则使用system()
system()返回自1970年1月1日以来经过的时间(按秒计算)
相关推荐
例如,如果使用空格作为分隔符,那么 `awk '{print $1}'` 将打印每行的第一个字段。 ##### 2. 复杂表达式 Awk 支持复杂的数学运算和字符串操作。比如,可以使用算术运算符 `+`, `-`, `*`, `/`,也可以使用字符串...
此外,由于`awk`通常作为Unix/Linux系统的一部分预装,用户无需额外安装即可直接使用,这使得它成为一个易于获取和使用的工具。 在处理文本数据时,`awk`的优势在于它可以方便地处理分隔符,如空格或制表符,使得...
这里的 $1=$1 表示将第一个字段赋值为其自己,强迫 awk 使用新的 OFS 重组记录,否则新 OFS 不起作用。 2. 去除文件中的重复行 awk '!a[$0]++' file 或者 sort file | uniq 这两条命令都可以用于去除文件中的重复...
### awk使用手册详解 #### 一、awk简介 在UNIX世界里,存在许多强大的文本处理工具,其中awk作为一款出色的模式扫描与处理语言,却往往被人们所忽视。它的名字来源于三位创造者的名字首字母——Aho、Weinberg以及...
### awk使用基本理论 #### 一、awk简介与版本 - **awk** 是 Linux Shell 三剑客之一,主要用于文本处理。它是一种强大的文本分析工具,可以在数据流中搜索匹配的模式并执行相应的操作。 - **awk** 有三个主要版本...
awk '{ visits[$1]++ } END { for (ip in visits) { print ip, visits[ip] } }' access.log | sort -rn | head -1 ``` 这将统计访问日志中的IP地址并输出访问次数最多的IP。 通过深入学习`awk`,你可以高效地处理...
在IT领域,`awk`是一种强大的文本分析工具,常用于处理结构化数据,如日志文件、...参考《AWK编程基础.pdf》和《awk使用手册.pdf》会有更深入的了解,同时,《sed使用手册.pdf》也是处理文本的强大工具,值得一同学习。
`awk`的动作可以包括打印(`print`)、重定向(`printf`)、条件判断(`if...else`)、循环(`for`、`while`)以及内置函数,如计算平均值(`awk '{sum+=$1} END{print sum/NR}'`)。 **6. 行内模式匹配** 除了匹配...
### AWK使用手册知识点 #### 一、AWK简介与适用场景 - **AWK**是一种专门用于文本处理和报告生成的脚本语言,在Linux环境下非常流行。 - **适用问题**:AWK适用于处理结构化的文本文件,尤其擅长处理那些包含特定...
- `awk -F $Sep '{print $1}' file`:使用变量`Sep`作为分隔符打印第一列。 **5. 脚本文件** - `awk -f awkfile file`:从外部文件`awkfile`中读取AWK命令,并应用于文件`file`。 - 在脚本文件中可以定义复杂的...
### AWK使用简介 #### 一、AWK概述 AWK是一种专为文本处理而设计的编程语言,广泛应用于Linux/Unix环境中。它能够高效地处理来自标准输入、单个或多个文件,甚至其他命令输出的数据。作为一种强大的编程工具,AWK...
1. **文本处理的高效性**:Awk 作为一种文本处理工具,特别适合于处理无特定格式的文本文件,这使得人们可以更加灵活地处理各种文本数据。 2. **简单易用**:与 C 或 C++ 相比,Awk 更加简单易学,用户可以直接在...
**AWK详解与使用手册** AWK是一种强大的文本分析工具,尤其在处理结构化数据时,它的灵活性和高效性使其成为Unix/Linux环境中的得力助手。这个文档将深入讲解AWK的基本概念、语法以及实际应用。 ### 1. **AWK基础...