`

awk笔记

 
阅读更多

awk

三个部分:

BEGIN{}  #在脚本开始的时候执行一次,相当于初始化

{}  #每一行都会执行一次的部分

END{} #脚本运行完之后会执行一次。相当于最后的总结。

 

如何写成文件?

#!/bin/awk -f 
BEGIN{
     print "begin";
}

{
     print "everyline";

}

END{
     print "end";
}

 

但是ubuntu上会报 ?/bin/awk 解释器已损坏。这是由于在/bin/awk这找不到awk程序,怎么办?

whereis awk   ,找到awk的位置,然后改成正确的位置即可。

#!/usr/bin/awk -f 
BEGIN{
     print "begin";
}

{
     print "everyline";

}

END{
     print "end";
}

 

运行:

chmod +x mytest.awk
./mytest.awk data.txt

 

 一些内建数据变量:

$0 $1 $2....  #  $0表示读入的那一行$1...表示各个field

NF(Number of Fields)

NR(Number of Records)

FILENAME(正在处理的数据文件文件名)

 

awk有一个输入函数:getline

awk 有两个输出函数:print和printf,其中printf是用于格式化输出的,用法同c语言中的用法

 

awk 中使用管道:  

"ls" | getline;

blablabla;

print $1 | "sort" >> "today.txt"

这样会多次调用getline,但只会调用一次 sort,即在所有输出完毕后通过pipe将数据传给sort。之前数据都缓存在了pipe里

 

但使用 system( "shell 命令" ) , awk无法直接将执行中的部分数据输出给Shell 命令. Shell 命令执行的结果也无法直接输入到awk.

   system("date > date.txt")

 

awk 中的 > 与shell中的>不同, awk中的>会追加,只是第一次打开的文件时会进行覆盖原来的文件。

 

FS: Filed Separator。 例子:  BEGIN { FS="[\t:]"}

 

for (variable in  array){}

 

关闭文件或者管道:

close(your_file_name)

close("sort >> 1.txt")  # 之前管道后面的字符串,一个字符都不能错,否则关闭的就是另外的文件

 split( 原字符串, 数组名, 分隔字符(field separator) )

 
ARGC, ARGV # ARGC是除-v,f,及其对应参数外的所有参数 

awk使用者所编写的函数可再重用, 并不需要每个awk式中都重新编写.将函数部分单独编写于一文件中, 当需要用到该函数时再以下列方式include进来. 

$ awk -f 函数文件名 -f awk主程序文件名 数据文件文件名 

 

awk 程式中常使用数组(Array)来记忆大量数据, delete 指令便是用来释放数组中的元素所占用的内存空间.

范 例 : 

for( any in X_arr )

    delete X_arr[any]

 

!!! delete 指令一次只能释放数组中的一个元素.

 

 

 match(buffer, pattern),例如:

match('abcde',/c/)

 

print $1  # $0 是整个串

 

int(x) 会返回x的整数部分, int(1.2) 会返回1, int(-1.2)会返回-1.

sqrt(9)

exp(x) #  e^x

log(exp(1))

rand()  返回0到1之间的随机数,使用前需要srand()

sin(x),cos(x),atan(x) #x为弧度制

 

 

OFS(Output File Separator)

ORS (Output Record Separator)

 

awk中的 ^ 为指数运算符

 

一些函数:

index(原串,要找的子串)

若原字串中含有欲找寻的子字串,则返回该子字串在原字串中第一次出现的位置,若未曾出现该子字串则返回0.

 

length( 字串 ) : 返回该字串的长度.

match( 原字串, 用以找寻比对的正则表达式 )。awk会在原字串中找寻合乎正则表达式的子字串. 若合乎条件的子字串有多个, 则以原字串中最左方的子字串为准

awk找到该字串后会依此字串为依据进行下列动作:

设定awk内建变量 RSTART, RLENGTH :

          RSTART =  合条件的子字串在原字串中的位置.

                 =  0 ; 若未找到合条件的子字串

          RLENGTH = 合条件的子字串长度

                  = -1 ; 若未找到合条件的子字串.

 

返回 RSTART 之值.

 

sub( 比对用的正则表达式, 将替换的新字串, 原字串 )

sub( )将原字串中第一个(最左边)合乎所指定的正则表达式的子字串改以新字串取代

 

第二个参数"将替换的新字串"中可用"&"来代表"合於条件的子字串"

 

gsub( 比对用的正则表达式, 将替换的新字串, 原字串 )

 

这个函数与 sub()一样,同样是进行字串取代的函数. 唯一不同点

     gsub()会取代所有合条件的子字串

 

     gsub()会返回被取代的子字串个数.

 

substr( 字串,起始位置 [,长度] )

返回从起始位置起,指定长度的子字串. 若未指定长度,则返回起始位置到字串末尾的子字串.

分享到:
评论

相关推荐

    awk笔记 算数函数、字符串函数

    在给定的文件信息中,我们探讨了AWK这一强大文本处理工具中的算数函数、字符串函数以及其他功能,包括时间函数。以下是对这些知识点的详细解释: ### 算数函数 1. **atan2(y,x)**:此函数计算坐标 (x,y) 的角度...

    linux awk学习笔记

    Linux中的`awk`是一个强大的文本分析工具,由Alfred Aho、Brian Kernighan和Peter Weinberger三位开发者创建,因此得名。`awk`的主要功能是处理文本和数据,通过匹配特定模式对文件中的行进行操作。在Linux系统中,...

    AWK学习笔记.doc

    本笔记主要涵盖了AWK的基础知识和高级特性,旨在帮助读者理解和掌握这一实用工具。 **一.1 什么是AWK?** AWK是由Aho、Weinberger和Kernighan三位计算机科学家开发的,它的名字就是由他们的姓氏首字母组成的。AWK是...

    awk学习笔记.pdf

    AWK是一种编程语言,用于在Linux环境下对文本和数据进行处理和分析。它是许多UNIX系统中的标准工具,并且是文本处理的强大工具。AWK通过模式匹配来处理文本文件,其中可以指定一系列规则,称为模式和动作,来对输入...

    awk学习笔记,从论坛整理而来

    `awk` 是一种强大的文本分析工具,常用于处理和解析结构化的文本文件,如日志文件、配置文件等。在Linux和Unix系统中,`awk` 提供了一种灵活的方式来提取、过滤和处理数据。本篇文章将深入讲解 `awk` 的基本用法和...

    sed与awk(第二版)学习笔记

    sed与awk(第二版)学习笔记

    Awk学习笔记和指南

    awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和 动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。...

    PDF电子书《Awk学习笔记2010修改版》

    ### PDF电子书《Awk学习笔记2010修改版》相关知识点 #### AWK简介 AWK是一种强大的脚本语言,由Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan在1977年设计并实现。这三位计算机科学家的名字首字母合成了...

    awk 学习笔记加例子

    **awk学习笔记与实例解析** awk 是一种强大的文本分析工具,尤其在Linux和Unix系统中广泛使用。它允许用户通过模式匹配和处理规则对输入数据进行操作,特别适合于处理结构化的文本文件,如日志文件、配置文件等。本...

    Awk 个人笔记.docx

    `Awk` 是一个强大的文本分析工具,常用于处理结构化的数据文件,如CSV或TSV格式。在Unix和Linux环境中,它被广泛应用于数据处理和报告生成。下面将详细介绍`Awk`的一些核心概念和功能。 1. **awk 语法**: `Awk`...

    linux下AWK学习笔记

    本笔记将详细介绍AWK的基本概念、语法、命令选项以及常用的特性。 ### 1. AWK简介 AWK是由三位开发者的首字母命名的——Alfred V. Aho、Peter J. Weinberger和Brian W. Kernighan。它是一种内置了多种功能的语言,...

    awk学习笔记(学习awk编程的好帮手)

    awk是一种强大的文本分析工具,广泛应用于Linux和Unix系统中。它的名字来源于三位创始人Alfred Aho、Brian Kernighan和Peter Weinberger的首字母。awk能够处理文本文件、标准输入和其他命令的输出,通过匹配特定模式...

    awk学习笔记(简单易学)

    ### awk学习笔记精要 #### 1. awk简介 awk是一种功能强大的文本处理语言,主要用于在Linux/Unix环境中处理文本和数据。它能够从标准输入、文件或其它命令的输出中提取并处理数据,支持自定义函数和动态正则表达式...

    awk学习笔记

    awk学习笔记主要涵盖了awk编程语言的基础知识和常用功能。awk是一种强大的文本分析工具,尤其在Linux/Unix环境下广泛使用。它能够处理标准输入、文件或其它命令的输出,通过模式匹配对文本进行分析和处理。 1. **...

    awk学习使用笔记及举例

    ### awk学习使用笔记及举例 #### 1. awk简介 awk是一种专为文本处理而设计的编程语言,常用于Linux/Unix环境下。它可以处理来自标准输入、文件或其它命令输出的数据。awk支持用户自定义函数和动态正则表达式等功能...

    awk教程--别人家的笔记

    ### awk教程知识点详解 #### 一、awk简介 - **定义**:`awk`是一种用于文本数据处理的强大工具,属于解释型编程语言。 - **用途**:主要用于数据分析、报告生成等场景,尤其适用于处理结构化的文本文件。 #### 二...

    AWK-学习笔记(共享)

    AWK是一种强大的文本分析工具,尤其在处理结构化数据文件时效率极高。它以其独特的模式匹配和编程能力,被广泛应用于系统管理和数据分析中。以下是对标题和描述中提及的AWK学习知识点的详细阐述: 1. **AWK的定义**...

    awk 学习笔记

    ### awk 学习笔记 #### 1. awk简介 awk是一种功能强大的文本处理语言,主要用于Linux和Unix环境下的数据处理。它可以处理来自标准输入、文件或命令输出的数据,支持自定义函数和动态正则表达式等功能,使其成为...

Global site tag (gtag.js) - Google Analytics