码迷,mamicode.com
首页 > 系统相关 > 详细

2018-1-17 Linux学习笔记(awk)[重要]

时间:2018-01-17 21:55:51      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:学习笔记   正则表达式   编程工具   使用   笔记   用户自定义函数   求和   大于等于   std   

9.6 awk(上)

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。


head -n2 test.txt | awk -F ‘:‘ ‘{print $1}‘ ---->截取文档中的第一,二行的第1个字段
head -n2 test.txt | awk -F ‘:‘ ‘{print $0}‘ ---->截取文档中的第一,二行整行
head -n2 test.txt | awk -F ‘:‘ ‘{print $1 "#" $2 "#" $3 "#" $4}‘ ---->截取文档中的第一,二行的第1,2,3,4个字段
awk ‘/oo/‘ test.txt ---->截取文档中含有oo的行
awk -F ‘:‘ ‘/root/ {print $1,$3} /user/ {print $3,$4}‘ test.txt ---->截取文档中含有root的行的1,3字段和含有user行的3,4字段
awk -F ‘:‘ ‘$3=="0"‘ test.txt ---->截取文档中的第3字段等于0的行
awk -F ‘:‘ ‘$3>="500"‘ test.txt ---->截取文档中的第3字段大于等于字符串500(Ascll值)的行
awk -F ‘:‘ ‘$3>=500‘ test.txt ---->截取文档中的第3字段大于等于500的行
awk -F ‘:‘ ‘$7!="/sbin/nologin"‘ test.txt ---->截取文档中的第7字段不等于/sbin/nologin的行


备注:
-F 选项的作用是指定分隔符,如果不加-F指定,则以空格或者tab为分隔符。 Print为打印的动作,用来打印出某个字段。$1为第一个字段,$2为第二个字段,依次类推,有一个特殊的那就是$0,它表示整行。

9.7 awk(下)

awk -F ‘:‘ ‘$3<$4‘ test.txt ---->截取文档中的第3字段之值小于4个字段之值的行
awk -F ‘:‘ ‘$3>"5" && $3<"7"‘ test.txt ---->截取文档中的第3字段大于5小于7的行
awk -F ‘:‘ ‘$3>1000 || $7=="/bin/bash"‘ test.txt ---->截取文档中的第3字段大于1000并且第7字段不等于/bin/bash的行

  • 截取文档中的前5行的第1,3,4字段并且使用#作为分隔符输出:
    head -n5 test.txt | awk -F ‘:‘ ‘{OFS="#"}{print $1,$3,$4}‘
  • 截取文档中第3字段大于1000的行的第1,2,3,4字段并且使用#作为分隔符输出:
    awk -F ‘:‘ ‘{OFS="#"}{if($3>1000){print $1,$2,$3,$4}}‘ test.txt

head -n3 test.txt | awk -F ‘:‘ ‘{pirnt NF}‘ ---->截取文档前3行然后将每一行的段数打印出来
head -n3 test.txt | awk -F ‘:‘ ‘{pirnt NR}‘ ---->截取文档前3行然后将每一行的行号打印出来
awk ‘NR>40‘ test.txt ---->截取文档从第40行开始的所有行

head -n3 test.txt | awk -F ‘:‘ ‘$1="root"‘ ---->截取文档前3行并将每行的第1字段改为root
awk -F ‘:‘ ‘{(tot=tot+$3)};END {print tot}‘ test.txt ---->将文档每行的第3字段求和并打印出来
awk -F ‘:‘ ‘{if ($1=="root") {print $0}}‘ test.txt ---->如果一行的第1字段等于root,则将该行打印出来
awk -F ‘:‘ ‘NR<=20 && $1 ~ /roo/‘ test.txt ---->打印文档前20行行中第1字段含有roo的所有行


备注:
awk常用的变量有:
NF :段数, 用分隔符分隔后一共有多少段
NR :行数
OFS :打印出来时指定分隔符用
END :表示所有的行都已经执行

2018-1-17 Linux学习笔记(awk)[重要]

标签:学习笔记   正则表达式   编程工具   使用   笔记   用户自定义函数   求和   大于等于   std   

原文地址:http://blog.51cto.com/13517946/2062243

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!