awk 初学01

原创 2015年11月18日 15:08:00

环境是在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 初学

Awk使用        适合初学者,可以拿来直接使用的文档。 一、           awk的运行模式 # awk ‘条件类型1 {动作1} 条件类型2 {动作2} …’ filename ...

cocos2d-x初学笔记01:HelloWorld浅析

刚刚接触cocos2d-x引擎,有些东西总是看了一段时间后又忘记了,所以找个地方记下来,顺便能够和大家一块交流学习。由于是初学笔记,所以这部分内容不会对引擎功能的实现进行深入研究,只是知道怎么用而已。...
  • jukai7
  • jukai7
  • 2013年01月29日 18:50
  • 1970

C# 初学01

1、数据类型:decimal

初学u3D-2016/01/22

MonoBehavior的各个函数的执行顺序,回调,顺序,次数等 Update  当MonoBehaviour启用时,其Update在每一帧被调用。仅调用一次(每帧) LateU...

Vuejs初学--01

安装Node.js 安装命令行工具(vue-cli) 创建项目框架 - `vue init webpack vueStudy_01` 将项目导到webstorm 部署 - `npm run ...

Android开发之TextView的初学记录-01

Android学习的一些记录,感谢学长的细心教导,比心

Spring入门之初学注解01

1.新建Student.javapublic class Student { public void say(){ System.out.println("Student");...

跟着Vamei大神-01初学play

嗨!大家好。由于公司用到了play框架,为了尽快上手。本人开始大量的求助度娘。但是,好多文档写的太简化,而大部分还是英文的。oh,my god。众里寻他千百度,它却在灯火阑珊处。最后拜读了Vamei大...

初学unity3D-2016/01/18

1、学好unity3D需要掌握的知识 数学,英语,图形学,unity,shader,数据结构,unityEngine,unityEditor 2,、需要做的事情 注册一个博客,每天发...

[初学Unity]Graphics-01.Lighting in Unity

01. Unity5 Lighting OverviewGet an overview of the new lighting features in Unity 5 with this lesson...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:awk 初学01
举报原因:
原因补充:

(最多只允许输入30个字)