9.6 awk命令(上)
>awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
awk应用
awk打印指定内容
awk ‘{print $n}’ [filename] 在此n代表数字(当n=0时$0代表文件所有内容,当n=1,2,3...时$1,2,3...代表相应列)
[root@adai003 awk]# awk -F ':' '{print $1}' test.txt
root
bin
daemon
daemon
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c
……
可以一次打印多列:
[root@adai003 awk]# awk -F ':' '{print $1,$2,$3}' test.txt |head -3
root x 0
bin x 1
daemon x 2
可以指定打印各列内容时的分隔符号:
[root@adai003 awk]# awk -F ':' '{print $1"#"$2"#"$3}' test.txt |head -3
root#x#0
bin#x#1
daemon#x#2
说明: 指定分隔符后该命令只识别指定的分隔符,如果某行无指定的分隔符则会打印其整行!
打印含有“oo”的所有行:
[root@adai003 awk]# awk '/oo/' test.txt
root:x:0:0:roprot:/root:/bin/bash
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
打印第一段含有“oo”的行:
[root@adai003 awk]# awk -F ':' '$1 ~ /oo/' test.txt
注:‘~’表示匹配!
打印第一段中含有“oo”的行
root:x:0:0:roprot:/root:/bin/bash
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c
支持正则表达式:
[root@adai003 awk]# awk -F ':' '$1 ~ /o+/' test.txt
root:x:0:0:roprot:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c
[root@adai003 awk]# awk -F ':' '$1 ~ /oo+/' test.txt
root:x:0:0:roprot:/root:/bin/bash
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c
支持多个表达式同时执行:
[root@adai003 awk]# awk -F ':' '/root/ {print $1,$3} /daemon/ {print $1,$3,$4}' test.txt
root 0
daemon 2 2
daemon 2 2
即:打印各行中带有root或daemon的第1、3、4段内容。也可以写成“ awk -F ':' '/root|daemon/ {print $1,$3,$4}' test.txt”
针对数学表达式的用法
当'$3>=1000 {print $1}'时:
[root@adai003 awk]# awk -F ':' '$3>=1000 {print $1}' test.txt
user001
当'$3>="1000" {print $1}'时:
[root@adai003 awk]# awk -F ':' '$3>="1000" {print $1}' test.txt |head -3
daemon
adm
lp
匹配字符串:
[root@adai003 awk]# awk -F ':' '$7!="/sbin/nologin" ' test.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
user001:x:1000:1000::/home/user001:/bin/bash
“!=”表示不等于
说明: 当“1000”加引号时会被当做是字符串,以ASC码(二进制)的方式进行计算处理,不加引号的时候会被当做是数值处理。
[root@adai003 awk]# head -n3 test.txt |awk -F ':' '{OFS=":"} $1="root"'
root:x:0:0:root:/root:/bin/bash
root:x:1:1:bin:/bin:/sbin/nologin
root:x:2:2:daemon:/sbin:/sbin/nologin
[root@adai003 awk]# awk -F ':' '$3=="0" {print $1}' test.txt
root
说明: 当使用一个“=”等号时表示为等号前面字符赋值,使用两个“==”表示逻辑关系(进行判断)。
9.7 awk 命令(下)
[root@adai003 awk]# awk -F ':' '$3<$4' test.txt
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@adai003 awk]# awk -F ':' '$3==$4' test.txt |head -3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@adai003 awk]# awk -F ':' '$3>"5" && $3<"7"' test.txt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
说明: “&&”表示并且。
[root@adai003 awk]# awk -F ':' '$3>1000 || $7!="/sbin/nologin"' test.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
user001:x:1000:1000::/home/user001:/bin/bash
[root@adai003 awk]# awk -F ':' '$3>1000 || $7~/bash/' test.txt
root:x:0:0:root:/root:/bin/bash
user001:x:1000:1000::/home/user001:/bin/bash
说明: “||”表示或者。
OFS指定打印时的分隔符
语法1:
[root@adai003 awk]# awk -F ':' '{OFS="#"} $3>1000 || $7~/bash/ {print $1,$3,$7}' test.txt
root#0#/bin/bash
user001#1000#/bin/bash
语法2:
[root@adai003 awk]# awk -F ':' '{OFS="#"} {if ($3>1000 || $7~/bash/) {print $1,$3,$7}}' test.txt
root#0#/bin/bash
user001#1000#/bin/bash
[root@adai003 awk]# awk -F ':' '$3<5 && $7!="/sbin/nologin" {print NR":"$1}' test.txt
1:root
[root@adai003 awk]# awk -F ':' '$3<5 && $3>2 && $7=="/sbin/nologin" {print NR":"$1}' test.txt
4:adm
5:lp
打印前三行:
[root@adai003 awk]# awk -F ':' 'NR<=3' test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@adai003 awk]# awk -F ':' 'NR<=3 && $1~/root/' test.txt
root:x:0:0:root:/root:/bin/bash
注: 类似于grep -n。
- NF (=number fragment)表示段数(列)
[root@adai003 awk]# awk -F ':' '$3<5 && $3>2 && $7=="/sbin/nologin" {print NF":"$1}' test.txt
7:adm
7:lp
[root@adai003 awk]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt
5657
相关推荐
ass.awk工具用在数据库hang住时分析收集到的systemstate所用,可以清晰明了的查看systemstate中的信息; 命令简单: $ awk -f ass1033.awk [trace_name_file] 在系统hung的时候,systemstate基本等同于hanganalyze...
### awk工具用法详解 #### 一、awk简介与基本语法 `awk`是一种强大的文本处理工具,在Linux和Unix环境中非常常见。它主要用于提取、分析和处理文本文件中的数据。`awk`支持复杂的条件判断与循环操作,可以方便地...
- 大多数Linux发行版默认包含了AWK工具。 - 如果系统未安装,可以通过FTP或在线资源下载安装包: - `phi.sinica.edu.tw:/pub/gnu` - `ftp.edu.tw:/UNIX/gnu` - `prep.ai.mit.edu:/pub/gnu` #### 四、AWK的工作...
### Linux 下 awk 工具的使用详解 #### 1. awk 简介 `awk` 是一款在 Linux/Unix 环境下极其强大的文本处理工具,它能够灵活地处理各种格式的数据文件,适用于数据筛选、分析及格式转换等多种场景。`awk` 的主要优势...
awk工具的使用.html
### AWK工具脚本整理知识点 #### 一、AWK简介 AWK是一种强大的文本处理工具,主要用于在Unix和类Unix系统中进行数据提取和报告生成。它支持使用简单的编程语句来处理文本文件中的模式匹配、字段提取等功能。本文档...
"ass109.awk" 正是一款针对Oracle数据库追踪文件的专业分析工具。 awk是一种强大的文本分析工具,它允许用户通过模式匹配和处理来操作文本文件。在Oracle社区中,开发者和DBA们经常利用awk的强大功能来解析和理解...
SQL> oradebug setmypid Statement processed. SQL> oradebug unlimit Statement processed. SQL> oradebug dump systemstate 266 Statement processed. SQL> oradebug tracefile_name /oracle/ora10g/admin/jscn/...
3. 使用AWK工具对文本文件进行处理和格式化。 在AWK脚本中,我们可以使用BEGIN语句来定义初始值,使用for循环来处理每一行的数据,并使用printf语句来输出格式化后的数据。 在实际工作中,我们可能需要根据不同的...
**sed和awk工具的介绍与应用** sed和awk是广泛应用于UNIX系统中的两个文本处理工具。sed是流编辑器(stream editor)的缩写,而awk则是一种编程语言,得名于其三位开发者:Alfred Aho、Peter J. Weinberger和Brian ...
《awk使用手册-学习AWK首选》是一本详细介绍Unix awk工具的指南,旨在帮助读者从基础到深入地掌握awk的使用。作者池中龙通过详实的解释和丰富的实例,为不同水平的用户提供全面的学习资源。 awk是Unix/Linux环境中...
Linux系统中AWK工具是专门用于文本处理的强大工具,能够帮助用户分析和处理文本文件,生成报告,进行复杂的文本分析。AWK之所以强大,是因为它是一门解释型编程语言,拥有自己的编程逻辑和语法。它由Afred Aho, ...
windows 下的awk 命令工具
awk工具在处理数据时常常与其他UNIX/Linux工具如grep、sed、find、tar等结合使用,以实现更为强大和灵活的数据处理能力。awk的知识体系庞大,涉及文本处理的各个方面,因此掌握awk,无论是在学习还是工作中,都能...
### sed和awk工具详解 #### 一、引言 在Linux和Unix系统中,文本处理是一项常见的需求。其中,`sed`(stream editor)和`awk`是两款非常强大的文本处理工具,它们不仅功能强大而且极其灵活。本文将详细介绍这两款...
Shell脚本之awk篇主要介绍了awk工具在Linux/Unix系统下进行文本和数据处理的应用。awk是一种编程语言,特别适合于对文本文件进行分析和处理,它可以读取标准输入、文件或管道中的数据。awk的名称来源于其创始人...
4. `awk`:文本处理工具,常用于数据提取和处理。 5. `sort`:对文件进行排序。例如,`sort file.txt` 对file.txt内容进行排序。 6. `uniq`:去除连续重复行。常与`sort`配合使用,如`sort file.txt | uniq`。 7. `...
《Sed&Awk 2th Edition》是一本专注于Sed和Awk工具的第二版教程,对于想要深入理解和熟练运用这两个强大的文本处理工具的读者来说,无疑是一份宝贵的资源。Sed(Stream Editor)和Awk(Aho, Weinberger, Kernighan)...
"Awk for DOS" 是一个在DOS环境下使用的awk工具,它允许用户在命令行界面中处理文本数据,类似于在Unix或Linux系统中的awk。Awk是一种强大的文本分析语言,常用于数据提取、报告生成以及数据转换等任务。在DOS环境中...