awk 初学01
来源:互联网 发布:淘宝的旺旺账号是什么 编辑:程序博客网 时间:2024/04/28 14:06
环境是在linux下
file.awk文件可以直接在命令行下通过 awk -f file.awk [file path] 来运行
当然awk语句可以直接在命令行下使用
目前学到得东西:
整体分为:
BEGIN {
}{}END {}
其中BEGIN是在对文件处理之前,进行的一些初始化,定义,规范之类的。
第二个部分主要就是对文件的处理行为。
END是对文件处理完成之后做的事情。
awk '{print $0}' /etc/passwd
这样可以直接在终端运行,显示出/etc/passwd中得内容 $0就是对应文件每行的内容 $1 $2 就是第一个参数,第二个参数 置于分隔符,可以在文件file.awk中通过FS来设置或者通过在命令行通过-F来设置 ,如:awk -F":" '{print $0} /etc/passwd 这样就是根据 ":” 来分割成不同的$1 $2...
对于print动作,当然也可以输出与文件内容无关的东西,这个无所谓。过程就是对文件的每一行都执行同样的动作。
关于print 这个和C相似,但是更简单一些。不用格式可以直接输出。如果输出多个可以这样:print $1 "\t" $2 "\t content" 。
对于file.awk
一些常见的变量
NF:显示字段数量,就是多少行,通过这个变量可以控制你所要输出的某些航
NR:记录号,每个字段的参数数量,就是$0 $1 $2....最后一个可以是哪个
FS:来设置分隔符
RS:来设置字段结束的位置 和FS一起使用可以根据将几行当做一个记录来处理
/indexId/ {print $0} 这样输出包含indexId的字段
可以使用if来改写这个
if($1 ~/indexId/) {print $0}
在awk中~表示匹配的意思 !~表示不匹配
if($0 !~ /indexId) 这样就可以输出 所有不包含indexId的所有字段
awk中可以使用C中得运算符和逻辑符号
允许if的嵌套,这样由C转过来学习awk的人就会很容易掌握。
一个可以统计一个文件中有多少空行的小代码:
BEGIN{ x=0}{ if($0 ~/^$/){ x+=1 }}END { print x}
/^$/ 就是这个字段开始就是$,$就是结束符的意思
在awk中所有的变量都是字符串化的
x="2.01"y=3.00
这样x+y是可以直接计算的,按照浮点进行计算并返回结果。
关于FS RS
FS用来设置分隔符,可以使用正则里边的东西
比如:
FS="\t+"FS="[[:space:]+]"第一个是以多个tab来作分隔符
第二个是以多个空格来做分隔符
如果以及几个数字做分隔符可以这样
FS="[0-9]+"这样就是以几个数字作为分隔符
如果我们希望把多行当做一个整体可以使用FS RS一起实现
BEGIN { FS="/n" RS=""}每一行当做一个参数,一个空行作为结束
OFS ORS
如果我们希望在输出时候,中间插入某些特定的符号,以区分输出的字段
可以设置OFS,不设置,默认是直接连接。
在 BEGIN中设置即可
ORS 是用来区分字段的,默认是换行。
循环
do {
}while();
while() {
}
BEGIN { OFS=" " mystring = "How are you doing today?" }
for(x=1;x<10;x++){}
这三个和C并没有区别,注意里边的语法就可以了。
awk同样支持数组,array[0]="jdkjaf"
遍历数组
for(x in array) { print array[x]}
这样可以把数组中得内容输出出来,但是这样有个问题就是x不一定是从1开始,他开始的位置是随机的,进行一次遍历,可能是1-9 可能是 4-9-3这样
判断某一个下标的元素是否存在于数组中,可以是用in来判断
awk的格式化输出printf() sprintf() 和C语言的相同。
awk的字符串操作:
print length(mystring) print index(mystring, "you") print tolower(mystring) print toupper(mystring) print substr(mystring, 9, 3) print match(mystring, /you/),RSTART,RLENGTH sub(/o/, "O", mystring) print mystring mystring = "How are you donging today?" gsub(/o/, "O", mystring)
- awk 初学01
- awk初学
- awk 初学
- 初学shell awk
- awk 初学02
- 初学sed、awk和grep
- linux初学习之awk
- awk
- awk
- AWK
- awk
- AWK
- awk
- awk
- AWK
- awk
- awk
- AWK
- 虚拟机vmnet0、vmnet1和vmnet8的区别
- HTML meta refresh 刷新与跳转(重定向)页面
- 「喵神成长史」『布局篇』AbsoluteLayout(绝对布局)
- linux字符驱动之初见
- 手机触模的图片轮播
- awk 初学01
- 304状态码
- virtualbox 设置共享文件夹
- 404、500、502等HTTP状态码介绍
- Reporting Services 报表URL 参数设置
- OP-TEE初探
- java内存回收机制
- How Did Watson Answer? —— Textual Evidance
- 485通讯