awk ~用法
awk的基本使用方法

awk的基本使⽤⽅法awk是处理⽂本⽂件的⼀个应⽤程序,⼏乎所有系统都⾃带这个程序。
它依次处理⽂件的每⼀⾏,并读取⾥⾯的每⼀个字段。
对于⽇志、CSV 那样的每⾏格式相同的⽂本⽂件,awk可能是最⽅便的⼯具。
awk其实不仅仅是⼯具软件,还是⼀种编程语⾔。
不过,本⽂只介绍它的命令⾏⽤法,对于⼤多数场合,应该⾜够⽤了。
⼀、基本⽤法awk的基本⽤法就是下⾯的形式。
# 格式$ awk 动作⽂件名# ⽰例$ awk '{print $0}' demo.txt上⾯⽰例中,demo.txt是awk所要处理的⽂本⽂件。
前⾯单引号内部有⼀个⼤括号,⾥⾯就是每⼀⾏的处理动作print $0。
其中,print是打印命令,$0代表当前⾏,因此上⾯命令的执⾏结果,就是把每⼀⾏原样打印出来。
下⾯,我们先⽤标准输⼊(stdin)演⽰上⾯这个例⼦。
$ echo 'this is a test' | awk '{print $0}'this is a test上⾯代码中,print $0就是把标准输⼊this is a test,重新打印了⼀遍。
awk会根据空格和制表符,将每⼀⾏分成若⼲字段,依次⽤$1、$2、$3代表第⼀个字段、第⼆个字段、第三个字段等等。
>$ echo 'this is a test' | awk '{print $3}'a上⾯代码中,$3代表this is a test的第三个字段a。
下⾯,为了便于举例,我们把/etc/passwd⽂件保存成demo.txt。
>root:x:0:0:root:/root:/usr/bin/zshdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/sync这个⽂件的字段分隔符是冒号(:),所以要⽤-F参数指定分隔符为冒号。
awk参数中的转义字符

在Awk(Awkward)中,转义字符是以反斜杠(\)开头的特殊字符。
下面是一些常见的Awk转义字符及其用法:1. \n:换行符。
2. \t:制表符。
3. \v:垂直制表符。
4. \b:退格符。
5. \r:回车符。
6. \\:反斜杠符本身。
7. \": 引号。
8. \': 单引号。
9. \": 双引号。
10. \?: 问号。
11. \=:等于号。
12. \>: 大于号。
13. \<:小于号。
14. \|:管道符号。
15. \&:与符号。
16. \:冒号。
17. \(:左括号。
18. \):右括号。
19. \+:加号。
20. \-:减号。
21. \*=乘号。
22. /=除号。
23. \%=取余数符号。
24. \^:脱字符。
25. \~:波浪线。
26. !:感叹号。
27. \@:AT符号。
28. #:井号。
29. $:美元符号。
30. %:百分号。
31. ^:上划线符号。
32. _:下划线符号。
33. ' ':空格字符。
34. \[ 和 \]:方括号字符。
35. \{ 和 \}:大括号字符。
36. \|:竖线字符。
37. . :句点(小数点)。
38. \0:空字符(NULL)。
39. \xHH:十六进制字符代码(HH表示两个十六进制数字)。
40. \uHHH:Unicode字符代码(HHH表示三个十六进制数字)。
41. \ddd:八进制字符代码(ddd表示三个八进制数字)。
42. \a:警告音(BEL)。
43. \b:退格符(BS)。
44. \f:换页符(FF)。
45. \n:换行符(LF)。
46. \r:回车符(CR)。
47. \t:制表符(TAB)。
awk正则表达式介绍

awk命令详解简单使用:awk :对于文件中一行行的独处来执行操作。
awk -F :'{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来。
详细介绍:AWK命令介绍awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息1.调用awk:第一种命令行方式,如:awk [-Field-separator] 'commands' input-file(s)这里commands是真正的awk命令,[-F域分隔符]是可选的,awk默认使用空格分隔,因此如果要浏览域间有空格的文本,不必指定这个选项,但如果浏览如passwd文件,此文件各域使用冒号作为分隔符,则必须使用-F选项: awk -F : 'commands' input-file第二种,将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它第三种,将所有awk命令插入一个单独文件,然后调用,如:awk -f awk-script-file input-file-f选项指明在文件awk-script-file的awk脚本,input-file是使用awk进行浏览的文件名2.awk脚本:awk脚本由各种操作和模式组成,根据分隔符(-F选项),默认为空格,读取的内容依次放置到对应的域中,一行一行记录读取,直到文件尾2.1.模式和动作任何awk语句都是由模式和动作组成,在一个awk脚本中可能有许多语句。
模式部分决定动作语句何时触发及触发事件。
动作即对数据进行的操作,如果省去模式部分,动作将时刻保持执行状态模式可以是任何条件语句或复合语句或正则表达式,模式包含两个特殊字段BEGIN和END,使用BEGIN语句设置计数和打印头,BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文件开始执行;END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志,有动作必须使用{}括起来实际动作在大括号{}内指明,常用来做打印动作,但是还有更长的代码如if和循环looping 语句及循环退出等,如果不指明采取什么动作,awk默认打印出所有浏览出的记录2.2.域和记录:awk执行时,其浏览标记为$1,$2...$n,这种方法称为域标记。
Linux常用基本命令:三剑客命令之-awk动作用法(1)

Linux常⽤基本命令:三剑客命令之-awk动作⽤法(1)1,多个动作,怎么写?ghostwu@dev:~/linux/awk$ cat host.txtname ip地址host1 192.168.1.1host2 192.177.81.1host3 10.0.0.5host4 192.168.3.98host5 192.168.3.98host6 192.168.9.254每个{}表⽰⼀个动作:ghostwu@dev:~/linux/awk$ awk'{print $1} {print $2}' host.txtnameip地址host1192.168.1.1host2192.177.81.1host310.0.0.5host4192.168.3.98host5192.168.3.98host6192.168.9.254他的等价形式,这种⽅式更符合我们的编程习惯,⼀个语句,⼀个分号。
ghostwu@dev:~/linux/awk$ awk'{print $1; print $2}' host.txtnameip地址host1192.168.1.1host2192.177.81.1host310.0.0.5host4192.168.3.98host5192.168.3.98host6192.168.9.254请注意与这种⽅式的区别:ghostwu@dev:~/linux/awk$ awk'{print $1, $2}' host.txtname ip地址host1 192.168.1.1host2 192.177.81.1host3 10.0.0.5host4 192.168.3.98host5 192.168.3.98host6 192.168.9.2542,if语句ghostwu@dev:~/linux/awk$ cat ghostwu.txtghostwu 20manzhangsan 22lisighostwu 30manzhanzhao 40manpeter 20manzhanzhao 30manghostwu@dev:~/linux/awk$ awk'{ if(NR == 1){ print }}' ghostwu.txtghostwu 20man如果是第⼀⾏,就输出, print 后⾯默认为$0( 当前⾏ ), 如果$0没有写ghostwu@dev:~/linux/awk$ awk'{ if(NR == 1){ print $1, $2}}' ghostwu.txtghostwu 20ghostwu@dev:~/linux/awk$ awk'{ if(NR == 1){ print $1; print $2}}' ghostwu.txtghostwu203,利⽤if....else判断账户是普通⽤户还是系统⽤户ghostwu@dev:~/linux/awk$ awk -v FS=":"'{ if ( $3 < 1000 ){ print $1,"是系统⽤户"} else { print $1,"是普通⽤户" } }' /etc/passwd root 是系统⽤户ghostwu 是普通⽤户...4,if ... else... if嵌套ghostwu@dev:~$ awk'{ if( $2 > 0 ) { print "正数" } else if ( $2 == 0 ) { print "0" } else { print "负数" } }' num.txt正数负数ghostwu@dev:~$ cat num.txt1102 -10305,循环ghostwu@dev:~$ awk'BEGIN{ for( i = 1; i <= 6; i++) { print i } }'1234566,while循环ghostwu@dev:~$ awk'BEGIN{ i = 1; do { print "ghostwu",i; i++ } while( i <= 3 )}'ghostwu 1ghostwu 2ghostwu 3ghostwu@dev:~$ awk'BEGIN{ i = 1; do { print "ghostwu"i; i++ } while( i <= 3 )}'ghostwu1ghostwu2ghostwu37,do ... while循环ghostwu@dev:~$ awk'BEGIN{ i = 1; do{ print "ghostwu"i; } while( i++ <= 3 ) }'ghostwu1ghostwu2ghostwu3ghostwu48,continueghostwu@dev:~$ awk'BEGIN{ for( i = 1; i <= 3; i++ ){ if( i == 2 ){ continue; } print i; } }'139,breakghostwu@dev:~$ awk'BEGIN{ for( i = 1; i <= 3; i++ ){ if( i == 2 ){ break; } print i; } }'110, exit,终⽌程序执⾏,如果有END,跳转到END,如果没有,直接退出ghostwu@dev:~/linux/awk$ awk'BEGIN{ print "开始"} {print} END{ print "结束" }' ghostwu.txt开始ghostwu 20manzhangsan 22lisighostwu 30manzhanzhao 40manpeter 20manzhanzhao 30man结束ghostwu@dev:~/linux/awk$ awk'BEGIN{ print "开始";exit} {print} END{ print "结束"" }' ghostwu.txt开始结束11,next,让awk直接从下⼀⾏开始ghostwu@dev:~/linux/awk$ awk'{print;next;}' host.txtname ip地址host1 192.168.1.1host2 192.177.81.1host3 10.0.0.5host4 192.168.3.98host5 192.168.3.98host6 192.168.9.254ghostwu@dev:~/linux/awk$ awk'{if( NR == 1 ){next;} print}' host.txt host1 192.168.1.1host2 192.177.81.1host3 10.0.0.5host4 192.168.3.98host5 192.168.3.98host6 192.168.9.254。
shell里awkprint的用法详解

shell⾥awkprint的⽤法详解⾸先,你需要先了解awk 的⼯作原理:1。
AWK读取输⼊⽂件⼀次⼀⾏。
2。
对于每⼀⾏,它匹配在给定的顺序模式,如果匹配,执⾏相应的动作。
3。
如果没有模式匹配,将执⾏任何⾏动。
4。
在上⾯的语法,⽆论是搜索模式,或⾏动是可选的,但不能同时。
5。
如果没有给出搜索模式,然后awk要执⾏每⼀⾏输⼊给定的⾏动。
6。
如果没有给出动作,打印,这是默认的操作与模式相匹配的所有⾏。
7。
空出的任何⾏动括号什么都不做。
它不会执⾏默认的打印操作。
8。
中的每个⾏动的声明应该⽤分号分隔。
让我们创建employee.txt⽂件,其中有⾸先,你需要先了解awk 的⼯作原理:1。
AWK读取输⼊⽂件⼀次⼀⾏。
2。
对于每⼀⾏,它匹配在给定的顺序模式,如果匹配,执⾏相应的动作。
3。
如果没有模式匹配,将执⾏任何⾏动。
4。
在上⾯的语法,⽆论是搜索模式,或⾏动是可选的,但不能同时。
5。
如果没有给出搜索模式,然后awk要执⾏每⼀⾏输⼊给定的⾏动。
6。
如果没有给出动作,打印,这是默认的操作与模式相匹配的所有⾏。
7。
空出的任何⾏动括号什么都不做。
它不会执⾏默认的打印操作。
8。
中的每个⾏动的声明应该⽤分号分隔。
让我们创建employee.txt⽂件,其中有以下内容,这将是在使⽤下⽂提到的例⼦。
$cat employee.txt100 Thomas Manager Sales $5,000200 Jason Developer Technology $5,500300 Sanjay Sysadmin Technology $7,000400 Nisha Manager Marketing $9,500500 Randy DBA Technology $6,000Awk的范例1。
awk的默认⾏为默认情况下的awk打印⽂件的每⼀⾏。
1234567$ awk '{print;}' employee.txt100 Thomas Manager Sales $5,000200 Jason Developer Technology $5,500300 Sanjay Sysadmin Technology $7,000400 Nisha Manager Marketing $9,500500 Randy DBA Technology $6,000在上⾯的例⼦中模式中没有给出。
awk使用规则

awk使用规则awk 是一种很棒的语言。
awk 适合于文本处理和报表生成,它还有许多精心设计的特性,允许进行需要特殊技巧程序设计。
与某些语言不同,awk 的语法较为常见。
它借鉴了某些语言的一些精华部分,如C 语言、python 和bash(虽然在技术上,awk 比python 和bash 早创建)。
awk 是那种一旦学会了就会成为您战略编码库的主要部分的语言。
第一个awk让我们继续,开始使用awk,以了解其工作原理。
在命令行中输入以下命令:$ awk '{ print }' /etc/passwd您将会见到/etc/passwd 文件的内容出现在眼前。
现在,解释awk 做了些什么。
调用a wk 时,我们指定/etc/passwd 作为输入文件。
执行awk 时,它依次对/etc/passwd 中的每一行执行print 命令。
所有输出都发送到stdout,所得到的结果与与执行catting /etc/passwd完全相同。
现在,解释{ print } 代码块。
在awk 中,花括号用于将几块代码组合到一起,这一点类似于C 语言。
在代码块中只有一条print 命令。
在awk 中,如果只出现print 命令,那么将打印当前行的全部内容。
这里是另一个awk 示例,它的作用与上例完全相同:$ awk '{ print $0 }' /etc/passwd在awk 中,$0 变量表示整个当前行,所以print 和print $0 的作用完全一样。
如果您愿意,可以创建一个awk 程序,让它输出与输入数据完全无关的数据。
以下是一个示例:$ awk '{ print "" }' /etc/passwd只要将"" 字符串传递给print 命令,它就会打印空白行。
如果测试该脚本,将会发现对于/etc/passwd 文件中的每一行,awk 都输出一个空白行。
一天一个shell命令linux文本内容操作系列-awk命令详解
⼀天⼀个shell命令linux⽂本内容操作系列-awk命令详解简介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有三种⽅式调⽤awk说明:awk被设计⽤于数据流,能够对列和⾏进⾏操作。
⽽sed更多的是匹配,进⾏替换和删除。
awk有很多内建的功能,⽐如数组,函数等。
灵活性是awk的最⼤优势。
awk的结构awk 'BEGIN{ print "start"}pattern { commands }END{ print "end"}'file为了偏于观看,我打了回车,实际上是⼀⾏⼀个awk脚本通常是3部分1. BEGIN语句块2. 能够使⽤模式匹配的通⽤语句块3. END语句块他们任何⼀部分都可以不出现在脚本中。
linux中awk nf作用
linux中awk nf作用
在Linux中,awk命令用于对文本和数据进行处理和分析。
NF 是awk命令的一个内置变量,表示“字段数量”,即当前行中的字段(单词或列)的数量。
在awk命令中,通过在命令行中使用“{ }”包裹代码块来执行操作。
在这个代码块中,我们可以使用NF变量来引用当前行的字段数量。
以下是一些NF变量的用法示例:
1. 打印每行的字段数量:
```
awk '{ print NF }' file.txt
```
该命令将打印file.txt文件中每行的字段数量。
2. 基于字段数量过滤行:
```
awk 'NF > 5' file.txt
```
该命令将打印file.txt文件中具有超过5个字段的行。
3. 使用字段数量计算平均值:
```
awk '{ sum += NF } END { print sum/NR }' file.txt
```
该命令将计算文件file.txt中每行字段数量的平均值。
总之,NF变量是awk命令中一个有用的内置变量,它提供了当前行中字段的数量。
它可以用于各种用途,包括筛选、计数和计算等操作。
shell awk match语法
shell awk match语法Shell Awk Match是一种在Shell编程中使用的强大工具,它通过匹配规则来处理文本数据。
在本文中,我们将详细介绍Shell Awk Match 语法,并提供一些实用的示例来帮助您更好地理解和应用。
一、Shell Awk Match基础知识Shell Awk Match是一种文本处理语言,它通过一系列的规则来匹配和处理文本数据。
Awk是一种完整的编程语言,但在Shell中,我们通常使用其匹配功能。
Awk匹配语法的一般形式如下:```awk '/pattern/ { action }' file```其中,`/pattern/`是一个用来匹配文本的模式,可以是一个字符串、正则表达式,或者是它们的组合。
`action`是要执行的动作,可以是打印、计算、修改等。
`file`是要处理的文本文件。
二、Awk匹配语法示例下面是一些常用的Awk匹配语法示例,帮助您更好地理解和使用Shell Awk Match。
1. 使用字符串匹配假设我们有一个名为`data.txt`的文本文件,包含如下内容:```applebananaorange```要匹配并打印出包含字符串“an”的行,可以使用如下的Awk命令:```awk '/an/ { print }' data.txt```执行结果将输出:```bananaorange```2. 使用正则表达式匹配假设我们有一个名为`data.txt`的文本文件,包含如下内容:```apple 100banana 200orange 150```要匹配并打印出第二列以1开头的行,可以使用如下的Awk命令:```awk '$2 ~ /^1/ { print }' data.txt```执行结果将输出:```apple 100```3. 组合多个模式假设我们有一个名为`data.txt`的文本文件,包含如下内容:```apple 100banana 200orange 150```要匹配并修改第二列大于100的行,将其置为0,可以使用如下的Awk命令:```awk '$2 > 100 { $2 = 0 } { print }' data.txt```执行结果将输出:```apple 0banana 0orange 0```三、Awk匹配语法高级应用除了基础的Awk匹配语法外,还有一些高级的用法,可以更灵活地处理文本数据。
awk中printf的用法
awk中printf的⽤法printf函数打印输出时,可能需要指定字段间的空格数,从⽽把列排整齐。
在中使⽤制表符并不能保证得到想要的输出,因此,可以⽤printf函数来格式化特别的输出。
printf函数返回⼀个带格式的字符串给标准输出,如同C语⾔中的printf语句⼀样。
printf语句包括⼀个加引号的控制串,控制串中可能嵌有若⼲格式说明和修饰符。
控制串后⾯跟⼀个逗号,之后是⼀列由逗号分隔的表达式。
printf函数根据控制串中的说明编排这些表达式的格式。
与print函数不同的是, printf不会在⾏尾⾃动换⾏。
因此,如果要换⾏,就必须在控制串中提供转义字符\n。
每⼀个百分号和格式说明都必须有⼀个对应的。
要打印百分号就必须在控制串中给出两个百分号。
请参考print转义字符和printf修饰符。
格式说明由百分号引出,另外还列出了printf所⽤的格式说明符。
printf使⽤的转义字符转义字符定义c字符s字符串d⼗进制整数ld⼗进制长整数u⼗进制⽆符号整数lu⼗进制⽆符号长整数x⼗六进制整数lx⼗六进制长整数o⼋进制整数lo⼋进制长整数e⽤科学记数法(e 记数法)表⽰的浮点数f浮点数g选⽤e或f中较短的⼀种形式printf的修饰符字符定义-左对齐修饰符#显⽰8 进制整数时在前⾯加个0显⽰16 进制整数时在前⾯加0x+显⽰使⽤d 、e 、f 和g 转换的整数时,加上正负号+或-0⽤0⽽不是空⽩符来填充所显⽰的值printf的格式说明符格式说明符功能%c 打印单个ASCII 字符printf("The character is %c\n",x)输出: The character is A%d 打印⼀个⼗进制数printf("The boy is %d years old\n",y)输出:The boy is 15 years old%e打印数字的e 记数法形式printf("z is %e\n",z) 打印: z is 2.3e+0 1%f打印⼀个浮点数printf("z is %f\n", 2.3 * 2)输出: z is 4.600000%o 打印数字的⼋进制printf("y is %o\n",y)输出:z is 17输出:z is 17%s 打印⼀个字符串print("The name of the culprit is %s\n",$1)输出:The name of the culprit is Bob Smith%x 打印数字的⼗六进制值printf("y is %x\n",y)输出:x is f格式说明符功能打印变量时,输出所在的位置称为"域"(field),域的宽度(width)是指该域中所包含的字符个数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
awk ~用法
awk是一种强大的文本分析工具,它通过一系列的命令和选项来处理文本数据。
其中一个常用的命令是`awk`的`~`操作符,它用于匹配文本模式。
一、基本用法
`awk`的`~`操作符用于在文本中查找匹配的模式。
它接受两个参数:一个是待匹配的文本,另一个是要匹配的模式。
如果模式匹配成功,则相应的行会被输出。
基本语法:`awk'pattern~pattern_to_match'file.txt`
例如,假设我们有一个名为`data.txt`的文本文件,其中包含以下内容:
```
JohnDoe
JaneSmith
Doe,John
Smith,Jane
```
如果我们想查找所有包含姓氏"Smith"的行,可以使用以下命令:```css
awk'last_name~/Smith/'data.txt
```
这将输出:
```
JaneSmith
Smith,Jane
```
二、特殊字符处理
在模式中,可以使用一些特殊字符和语法来匹配文本。
以下是一些常用的特殊字符和它们的含义:
*`*`:匹配任意数量的字符(包括零个字符)。
*`?`:匹配单个字符(问号)。
*`[]`:匹配方括号内的任意字符。
可以使用通配符,如`[a-z]`匹配小写字母。
*`[^]`:匹配不在方括号内的任意字符。
*`\`:用于转义特殊字符。
例如,如果我们想查找所有包含姓氏"Doe"或名字以"J."开头的行,可以使用以下命令:
```css
awk'last_name~/Doe|first_name~/J\./'data.txt
```
这将输出:
```mathematica
JohnDoe
Doe,John
```
三、匹配位置模式
除了匹配简单的文本模式外,`awk`还可以匹配位置模式。
这意味着我们可以指定模式在文本中的位置,以匹配特定范围的字符。
基本语法:`awk'start~pattern[len]'file.txt`
其中,`start`是起始位置,`pattern`是要匹配的模式,`len`是模式的长度。
如果模式匹配成功,相应的行会被输出。
例如,如果我们想查找所有在姓名之后出现数字的行,可以使用以下命令:
```css
awk'$2~/[0-9]$/'data.txt
```
这将输出:
```makefile
JohnDoe(25)
JaneSmith(32)
```
四、总结
awk的`~`操作符用于在文本中查找匹配的模式。
通过使用特殊字符和语法,我们可以灵活地匹配各种文本模式。
了解这些用法可以帮助我们更有效地处理文本数据。