awk用法总结
来源:互联网 发布:手机屏幕跑出蜘蛛软件 编辑:程序博客网 时间:2024/05/28 16:18
awk 主要用于数据提取
运行awk,需要一个告诉awk怎么做的awk程序。
awk是由一系列指令组成,每个指令是由一个搜索模式和一个执行动作组成,多个指令之间用换行符分开
pattern {action} \n
pattern {action}
运行awk有两种方式,
1,awk程序很短,可以直接写在运行awk的命令行中
2,awk程序比较长,通常放在一个文件中,使用-f来指出awk文件,文件一般使用.awk做为后缀
awk常用的选项有:
-F fs 用于指定数据的列分隔符,默认的是空格
-v var=value指定value给var,这些变量值用于awk程序的BEGIN块
-f 指定运行awk时的文件,运行awk的第二种方式
BEGIN END
BEGIN块的作用主要为声明变量,对于已有变量进行赋值,在读取文件开始执行之前调用
END块的作用主要为在文件处理结束之后调用,比如打印文件有多少行被处理,等等。
awk变量
$1 $2………………从1开始,不是从0开始
NF 读取的一行文本的列数
NR 文件的当前行数
使用:
下面所有的栗子都围绕test.txt。
test.txt 文件内容为:
Linux - Sysadmin
Databases - Oracle, MySQL etc
Security - Firewall, Network, Online etc.
Cool - Websites
1,
awk '{ print $1}' test.txt
打印以空格做为分隔符的每一行的第一列
2,
awk -F'-' '{print $2}' test.txt
打印以"-"做为分隔符的每一行的第二列
如果把awk程序放在文件中print2line.awk
BEGIN {
FS="-"
}
{
print $2
}
执行方式为:awk -f print2line.awk test.txt
运行结果为:
Sysadmin
Oracle, MySQL etc
Firewall, Network, Online etc.
Websites
3,
awk中使用if
awk -F'-' '{ if ($2 == " Sysadmin") print $2}' test.txt //注意Sysadmin前面有个空格
输出为: Sysadmin
4,awk中使用正则
awk -F'-' '{ if ($2 ~ "Sysadmin") print $2}' test.txt //注意Sysadmin前面没有空格
输出为: Sysadmin
5 awk中使用循环,(for while do…while)
awk '{for (i=1;i<=3;i++) print $i }' test.txt //可以看到每次print都会输出一个换行
输出结果:Linux
-
Sysadmin
Databases
-
Oracle,
Security
-
Firewall,
Cool
-
Websites
6 awk中进行算术运算,比如打印awk总共执行了文件的多少行
BEGIN {
x=0
}
{
x=x+1
if ($12>0) {
print $12" " NR
}
}
END {
print "there is "x" line"
}
7 awk中还可以包含数组
myarr[1]="one";
myarr[2]="two";
for(x in myarr){
print myarr[x]
}
8 awk中使用shell变量
在shell脚本中,有个变量readarg
awk调用时:awk -v pat="$readarg" '$1 ~ "linux"{print $1;print $2}' test.txt //注意,当有多个命令同时执行时,可以使用分号分开,如果多条命令是同一个条件满足才执行,则需要用{}括起来。
9 shell中使用awk的输出变量
myvalue=`awk -F "-" '{if($1 ~ "Linux") print $1}' test.txt`
注意awk和最后一个符号,是数字1左边那个按键。
执行 echo $z,输出为Linux
- awk用法总结
- awk用法总结
- awk用法总结
- awk常见用法总结
- shell awk 用法总结
- shell awk 用法总结
- awk用法总结
- awk用法总结
- awk用法总结
- awk用法总结
- [保留] awk用法小结(作者总结)
- shell脚本系列-awk用法总结
- awk用法小结(作者总结)
- [保留] awk用法小结(作者总结)
- 【linux学习笔记】awk用法总结
- AWK二维数组的用法总结
- awk用法
- awk用法
- memcached应用场景
- Java--金额的中文大写形式
- MySQL学习笔记-数据类型与操作数据表
- jQuery动态添加li标签并添加属性和绑定事件
- 【oracle】input
- awk用法总结
- 【js】JavaScript替换字符串中的空格
- qobject_cast
- 第十三周算法分析与设计:Kill Process
- 面试:----Spring MVC 文件上传下载
- springmvc无法跳转到首页controller
- LeetCoder 22. Generate Parentheses
- 分水岭分割方法
- 使用动画实现10-0的倒计时