标签:学习笔记 正则表达式 编程工具 使用 笔记 用户自定义函数 求和 大于等于 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,它表示整行。
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的行
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 :表示所有的行都已经执行
标签:学习笔记 正则表达式 编程工具 使用 笔记 用户自定义函数 求和 大于等于 std
原文地址:http://blog.51cto.com/13517946/2062243