awk命令

简介:

wKioL1nkGTuB8NUPAAr1vIrzw7A209.png

awksedgrep要复杂一些,awk支持分段,例如像passwd文件的内容很有规律用冒号分成七段,awk可以针对每一段进行匹配。


  awk最简单的用法就是照某个字符进行分割,然后可以选择打印某一段:

wKiom1nkG_OT9-esAAPeHwQcsq4138.png

wKioL1nkGULCE055AAn4jdnXem8196.png


打印所有的段:

wKiom1nkG_yRakuyAAmXKEdcpDE614.png


不分段,直接打印文件内容:

wKioL1nkGUqzqFpyAAgQ1K0EvxA318.png


不指定分段的字符符就会默认以空格为分段字符:

wKiom1nkHALRx1v7AAZEVG50kEQ407.png


打印多段内容:

wKioL1nkGVGhJ72hAAj3VGAUQYQ904.png


指定打印的时候以什么字符进行分割,例如我以*号进行分割:

wKioL1nkGZXzq8YhAAv_BEubk3k942.png


匹配指定字所在的行:

wKiom1nkHEuBiOQSAALyCUZtloU807.png


  指定匹配某一段并且此段包含指定字符的行,例如我指定匹配第一段包含有oo字符串的行:

wKiom1nkHEvD6iFvAAF34LhnBXE862.png

这就是awk强大的地方,并且同样匹配正则表达式。


awk中使用正则表达式不用加脱义符,默认就可以支持:

wKioL1nkGZai56rkAAGq40IgG9s170.png


awk支持同时写多个表达式:

wKioL1nkGZfjlI0jAAK--TYHc7w304.png

这个命令表示打印含有rootuser字符的行


使用|也可以:

wKiom1nkHE6h9BLIAAJfjQmkIpI496.png


awk还可以使用关系运算符:

wKiom1nkHE6SSQdNAAIppE4P9oQ958.png

这个命令表示匹配第三段含有0的行


wKiom1nkHUKSQX1pAANxVfwh8bk129.png

wKioL1nkGqCCPgCcAANj0dR-XWw553.png

  以上使用关系运算符进行的匹配是按照实际数字大小来匹配的,如果要按ASCII码的的大小匹配的话,加上双引号即可:

wKiom1nkHVrTxkX_AAibmbvSLco584.png


wKioL1nkGqWgz-hEAAMNEyeeBSw610.png




wKiom1nkHWDRTmc7AAoH8kLhCEY092.png


awk命令里使用比较运算符:

wKioL1nkGqyQQB2_AAP7rn4jACI091.png

wKioL1nkGq3gxWPpAAJb-kd6r5U523.png

wKioL1nkGvnwOUlMAAJFkq5UJsA093.png


指定打印的分割符:

wKioL1nkGvqSq6MGAAMEZcGt7xc219.png


想要写得规整一些就加上if条件判断语句:

wKiom1nkHbGAKWzjAANJyl_tLDA414.png


使用内置变量打印所有的行:

wKioL1nkGv-i0BKGAAj7BeCqygk952.png

NR表示行


wKiom1nkHbmwxHasAAgziWZG0Zc566.png

NF表示段

NR可以作为一个判断条件,例如我只打印前10行:

wKioL1nkGwazXECJAAUN7rq3ziM038.png


使用多个判断条件:

wKiom1nkHbyyMjrFAAJoQpjo-l4389.png


NRNF加上$符:

wKiom1nkHkaCPEYbAAxVxzUutxs240.png


使用awk命令对文件的某一段进行赋值:

wKioL1nkG5GBHMOBAAMEZQb3-Gw599.png


使用awk命令进行求和:

wKioL1nkG5KAgBnBAAJOO6sIe14541.png




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1972703,如需转载请自行联系原作者

相关文章
|
6月前
|
Perl
awk命令中逐行处理
awk命令中逐行处理
124 3
|
6月前
|
Perl
awk的正则表达
awk的正则表达
64 6
|
机器学习/深度学习 存储 监控
sed命令(超详细)
是一种流编辑器,它是文本处理中非常好的工具,能够完美的配合正则表达式使用,功能不同凡响。 处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命 令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复, 直到文件末尾。
210 0
|
Unix Shell Linux
【Shell编程】字符截取命令awk、sed命令
【Shell编程】字符截取命令awk、sed命令
234 0
|
Perl
awk指定分隔符
awk指定分隔符
72 0
|
MySQL 关系型数据库 Perl
|
MySQL 关系型数据库 Shell