自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (2)
  • 收藏
  • 关注

原创 awk条件语句

条件语句用于在执行操作之前做一个测试。在前面的章节中,我们看到了模式匹配规则的一些示例。模式匹配规则本质上就是影响输入循环的条件表达式。在这一部分,我们主要就在action中所使用的条件语句进行探讨。条件语句以if开头,并计算放在圆括号中的表达式。语法是:if (expression)action1[elseaction2]如果条件表达式expression的值

2015-07-02 19:28:44 1388

原创 awk向脚本传递参数(二)

命令行参数的一个重要限制是它们在BEGIN过程中是不可用的。也就是说,直到首行输入完成以后它们才可用。为什么?这是一个容易混乱的部分。从命令行传递的参数就好像文件名一样被处理。赋值操作知道这个变量(如果它是一个文件名)被求值时才进行。参阅下面的脚本,该脚本将变量n设置为一个命令行参数。awk ' BEGIN { print n }if (n == 1) print "Rea

2015-07-01 20:05:54 1371

原创 awk向脚本传递参数(一)

在awk中,一个容易引起混乱的地方就是向脚本传递参数。参数将值赋给一个变量,这个变量可以在awk脚本中访问。这个变量可以在命令行上设置,放在脚本的后面,文件名前面。awk 'script' var=value inputfile每一项都必须作为单一的参数来解释。因此,在等号的两边不允许出现空格。也可以用这个方法传递多个参数。例如,如果想在命令行定义变量high和low,

2015-06-30 21:19:20 1445

原创 向脚本传递参数(一)

在awk中,一个容易引起混乱的地方就是向脚本传递参数。参数将值赋给一个变量,这个变量可以在awk脚本中访问。这个变量可以在命令行上设置,放在脚本的后面,文件名前面。awk 'script' var=value inputfile每一项都必须作为单一的参数来解释。因此,在等号的两边不允许出现空格。也可以用这个方法传递多个参数。例如,如果想在命令行定义变量high和low,

2015-06-30 21:18:10 620

原创 awk应用-信息的检索

awk应用-信息的检索awk程序可以用于检索数据库中的信息,数据库实际上是各种类型的文本文件。文本文件的结构化越好,对其处理就越容易工作,尽管这个结果不过是由独立的单词组成的行。下面这个首字母缩写词列表是一个简单的数据库。$ cat acronymsBASIC Beginner' s AI I-Purpose Symbol ic Instruction Co

2015-06-28 19:41:49 627

原创 格式化打印(二)

printf语句可以规定输出域的宽度和对齐方式。一个格式表达式由3个可选的修饰符组成,跟在"%"后面,并出现在格式说明符之前。%-width.precision format-specifier描述输出字段宽度的width是一个数值。当指定域宽度时,这个域的内容默认为向右对齐。必须指定"-"来设置左对齐。因此, "%-20s" 输出的走向左对齐的一个域长度为20个字符的

2015-06-27 21:08:44 558

原创 格式化打印(一)

我们编写的许多脚本可以很好地实现对数据的操作,但没有对输出进行适当的格式化。这是因为基本的print语句所能做的工作有限。因为awk的大多数功能是产生报告,因此以整齐的样式产生格式化报告是很重要的。程序filesum可以很好地处理数据,但它的报告缺乏整齐的格式。awk提供的printf可以代替print语句,printf是借用了C程序设计语言。printf语句和print语句一样可以打印一

2015-06-26 22:10:45 810

原创 awk应用-获取文件的信息(三)

继续前面两节的内容,我们来看下面修改后的、加了注释的脚本:#!/bin/bashls -l $* | awk '/* filesum: 列出文件总的字节数*//* 输入:由命令"ls -l"生成的长列表*//*#1 输出列的标题*/BEGIN { print "BYTES", "\t", "FILE" }/*#2 测试第9个字段,文件以"-"开始

2015-06-24 21:40:30 985

原创 awk应用-获取文件的信息(二)

我们所编写的操作将应用于所有的输入行。当awk读入所有的输入行后,所产生的总数必须打印出来,因此,我们编写了一个由END规则控制的操作:END { print "Total: ", sum, "bytes (" filenum " files)" }我们还可以使用BEGIN 规则给报告增加列标题。BEGIN { print "BYTES", "\t", 

2015-06-23 21:59:50 561

原创 awk应用-获取文件的信息(一)

现在我们来学习UNIX命令ls的几个脚本。下面的执行命令ls -l得到的一个长列表样本$ ls -l-rw-rw-rw- 1 dale project 6041 Jan 1 12:31 com.tmp-rwxrwxrwx 1 dale project 1778 Jan 1 11 :55 combine.idx-rw-rw-rw- 1 dale project 1

2015-06-22 22:41:21 870

原创 awk布尔操作符

使用布尔操作符可以将一系列的比较组合起来。下表列出了布尔操作符。运算符含义例子&&逻辑与a && b||逻辑或a || b!逻辑非!a给定两个或多个表达式,只有当给定的表达式之一的值为真(非零或非空)时,使用操作符||的整个表达

2015-06-21 19:15:58 718

原创 awk关系操作符

关系操作符和布尔操作符用于在两个表达式之间进行比较。下表列出了关系操作符。关系操作符运算符含义示例小于x 小于等于x ==等于x == y!=不等于x != y>=大于等于x >= y

2015-06-20 19:09:10 1083

原创 awk处理多行记录

我们所有的例子中用到的输入文件其记录都是由单独一行组成的。在这一部分,我们将演示如何读入一个记录,而记录中的每个字段都由单独一行组成。前面我们了解了处理姓名和地址的文件的例子。让我们假设相同的数据保存在块格式的文件中。不是将所有的信息放置在一行,而是将人名放在一行,在下一行放置公司名、依此类推。下面是一个记录样本:John RobinsonKoren Inc.978 C

2015-06-18 20:53:09 5111

原创 awk应用-支票簿的结算

这是一个简单的应用,用于处理支票登记条目。虽然不一定是最简单的结算支票簿的方法,但使用awk来完成某事的速度会快得令人惊奇。假设已经输入了一个如下的文件:$ cat checkbook.test1000125   Market     -125.45126   Hardware Store     -34.95127   Video Store -7.45128  

2015-06-17 21:53:03 642

原创 awk内置变量的应用

现在我们来看一些例子,它们以变量NR开头。将前面计算平均成绩的脚本中的print语句修改为:$ cat gradesjohn 85 92 78 94 88andrea 89 90 75 90 86jasper 84 88 80 92 84$ cat grades.awk#求5个成绩的平均值{ total = $2 + $3 + $4 + $5 + $6a

2015-06-16 21:11:45 679

原创 awk应用-计算学生的平均成绩

让我们来看awk应用的一个例子,其中先对一系列学生的成绩进行相加,然后计算其平均值。下面是输入文件的具体数据:$ cat gradesjohn 85 92 78 94 88andrea 89 90 75 90 86jasper 84 88 80 92 84在学生的姓名后面有5个成绩。下面的脚本将给出每个学生的平均成绩:$ cat grades.awk

2015-06-15 20:47:24 2282

原创 awk赋值操作符

一旦变量被赋予了一个值,那么就可以用这个变量名来引用这个值。下面的表达式表示将变量x的值和1相加并将结果赋给变量y:y = x + 1即计算x加1的值,并将结果赋给变量y。语句print y打印y的值。如果下面的一系列语句将出现在脚本中:x = 1y = x + 1print y那么y的值为2。我们可以将这3个

2015-06-14 19:40:44 913

原创 awk转义序列与算术操作符

可以使用表达式来存储、操作和检索数据,这些操作与sed中的有很大的区别,但这是大多数程序设计语言所具有的共同特性。一个表达式通过计算返回一个值。表达式由数字和字符串常量、变量、操作符、函数和正则表达式组成。我们在之前的文章中中详细介绍了正则表达式。在这一部分,我们将学习由常量、变量和操作符组成的表达式。常量有两种类型:字符串型或数字型( "red"或1)。字符串在表达式中必须用引号

2015-06-13 16:17:47 1283

原创 字段的划分完整的问题

可以使用3个完全不同的方法使awk分隔字段。第一个方法是用空白字符来分隔字段。要实现这种方法,可将FS设置为一个空格。在这种情况下,记录的前导空白字符和结尾空白字符(空格和/或制表符)将被忽咯。因为FS的默认值为一个空格,所以这也是通常情况下awk将记录划分为字段的方法。第二个方法是使用其他单个字符来分隔字段。例如, awk程序经常使用":"作为分隔符来访问UNIX /etc/passwd

2015-06-11 20:57:57 915

原创 awk字段和引用的分离

awk使用字段操作符$来指定字段。在该操作符后面跟着一个数字或变量,用于标识字段的位置。"$1" 表示第一个字段, "$2" 表示第二个字段等等。"$0 "表示整个输入记录。下面的例子显示了第一个字段是姓,第二个字段是名字,后面是电话号码。$ awk '{ print $2,$1,$3 }' namesRobinson John 666-555-1111$1表示名字,

2015-06-10 20:03:10 781

原创 awk模式匹配

在这篇文章中,我们将看到许多小的,甚至没有什么意义的例子,但他们能够验证awk程序脚本的主要特点。当awk读入一行时,它试图匹配脚本中的每个模式匹配规则。只有与一个特定的模式相匹配的输入行才能成为操作对象。如果没有指定操作,与模式相匹配的输入行将被打印出来(执行打印语句是一个默认操作)。参阅下面的脚本:/^$/ { print "This is a blank line

2015-06-09 22:47:24 988

原创 awk 程序设计模型

理解awk提供给程序员的基本模型是很重要的。学习awk比学习其他程序设计语言更容易的部分原因,是由于awk为程序员提供了定义得当且有用的模型。awk 程序是由所谓的主输入(main input) 循环组成的。一个循环是一个例程,它将一直重复执行直到有一些存在的条件终止它。你不必写这个循环,他是现成的,它作为一个框架存在,在这个框架中你编写的代码能够执行。你所编写的处理操作的代码假设有一个可

2015-06-08 20:11:22 552

原创 Linux正则表达式-选择性操作与分组操作

选择性操作竖线(|)字符是元字符扩展集的一部分,用于指定正则表达式的联合。如果某行匹配其中的一个正则表达式,那么它就匹配该模式。例如,正则表达式:UNIX|LINUX将匹配包含字符串"UNIX" 或字符串"LINUX" 的行。可以指定更多的选择,例如:UNIX|LINUX|NETBSD使用egrep时,打印匹配这3种模式中任意一种的行。在sed中,没有联合元字符,可以分别指

2015-06-07 21:25:22 1893

原创 Linux正则表达式-字符的跨度

元字符允许你指定重复出现的字符。考虑下面的表达式:11*0它将匹配下面的每一行:101101111101111111111111111111111111110这些元字符使正则表达式具有了伸缩性。现在我们来看一对用于指定跨度并决定跨度长度的元字符。可以指定一个字母或正则表达式出现的最小或最大次数。在grep和sed中使用\{和\}。 awk不支持。在任何情

2015-06-06 20:41:54 603

原创 Linux正则表达式-定位元字符

有两个元字符用于指定字符串出现在行首或行末。脱字符(^)是指示开始的单字符正则表达式。美元符号($)是指示行结尾的单字符的正则表达式。这些通常称为"定位符",因为它们将匹配限定在特定位置。例如,可以使用以下表达式打印以First开始的行:^First没有^元字符,这个表达式将打印包含First的任意行。通常,使用VI输入要由troff处理的文本,并且不想让空格出现在行的结尾。如果想

2015-06-05 20:21:35 800

原创 Linux正则表达式-重复出现的字符

星号(*)元字符表示它前面的正则表达式可以出现零次或多次。也就是说,如果它修改了单个字符,那么该字符可以在那里也可以不在那里,并且如果它在那里,那可能会不止出现一个。可以使用星号元字符匹配出现在引号中的单词。□"*hypertext"*□不管单词"hypertext"是否出现在引号中都会被匹配。而且,如果由星号修饰的字符确实存在,那么有可能出现多次。例如,我们来看一系列数字:

2015-06-04 21:43:28 1164

原创 Linux正则表达式-定位元字符

有两个元字符用于指定字符串出现在行首或行末。脱字符(^)是指示开始的单字符正则表达式。美元符号($)是指示行结尾的单字符的正则表达式。这些通常称为"定位符",因为它们将匹配限定在特定位置。例如,可以使用以下表达式打印以First开始的行:^First没有^元字符,这个表达式将打印包含First的任意行。通常,使用VI输入要由troff处理的文本,并且不想让空格出现在行的结尾。如果想

2015-06-03 21:19:31 635

原创 Linux正则表达式-重复出现的字符

星号(*)元字符表示它前面的正则表达式可以出现零次或多次。也就是说,如果它修改了单个字符,那么该字符可以在那里也可以不在那里,并且如果它在那里,那可能会不止出现一个。可以使用星号元字符匹配出现在引号中的单词。□"*hypertext"*□不管单词"hypertext"是否出现在引号中都会被匹配。而且,如果由星号修饰的字符确实存在,那么有可能出现多次。例如,我们来看一系列数字:

2015-06-02 22:26:24 2005

原创 Linux正则表达式-单词

也许你已经发现,有时匹配完整的单词很难。例如,如果想匹配模式"book",搜索会命中包含单词"book"和"books"的行,而且还有单词"bookish"、"handbook"和"booky"。很显然可以在"book"前后使用空格来限制匹配情况。□book□然而,这个表达式只匹配单词"book",它会丢掉它的复数形式"books" 。为了匹配单数或复数单词,可能要使用星号元字符:

2015-06-01 20:25:04 1352

原创 Linux正则表达式-POSIX字符类

POSIX标准对正则表达式字符和操作符的含义进行了形式化。这种标准定义了两类正则表达式:基本的正则表达式(BRE) , grep和sed使用这种正则表达式;扩展的正则表达式,egrep和awk使用这种正则表达式。为了适应非英文的环境, POSIX标准增强了匹配不在英文字母表中的字符的字符类的功能。例如,法文è是一个字母字符,但是使用典型的字符类[a-z]不匹配它。该标准提供了附加的字母序列

2015-05-31 19:17:40 1232

原创 Linux正则表达式-排除字符类

通常,字符类包括在哪个位置想要匹配的所有的字符。在类中作为第一个字符的脱字符(^)将类中的所有字符排除在被匹配之外。相反,除换行符以外的没有列在方括号中的任意字符都将匹配。下面的模式将匹配任意非数字字符:[^0-9]它匹配字母表中所有的大写和小写字母以及所有特殊字符,例如标点符号。排除特殊字符有时比显示地列出想要匹配的所有字符更方便。例如,如果想要匹配任意辅音,可以简单地排除元音:

2015-05-30 21:10:55 2564

原创 正则表达式-字符的范围

连字符(-)用于指定一个字符范围。例如,所有大写英文字符的范围可以指定为:[A-Z]一个数字的范围可以指定为:[0-9]该字符类有助于解决匹配文章引用的问题。请看下面的正则表达式:[cC]hapter [1-9]它匹配字符串"chapter" 或"Chapter" 且其后面跟有空格,然后是从1到9的任意单个数字,下面的每一行都匹配这种模式:you will

2015-05-29 20:58:16 2840 1

原创 正则表达式-字符类

字符类是对通配符概念的改进。我们可以列出要匹配的字符,而不是匹配特殊位置的任意字符。使用方括号元字符( [] )将字符列表括起来,其中每个字符占据一个位置。字符类在处理大写和小写字母时非常有用。例如,如果"what" 可能以首字母大写或小写的形式出现,则可以指定:[Ww]hat这个正则表达式可以匹配"what" 或"What" 。它匹配包含这4个字符的字符串的任意行

2015-05-28 22:21:17 618

原创 Linux正则表达式-编写正则表达式

为了所有实用化的用途,你可以通过使用程序产生正确的结果。然而,并不意味着程序总是如你所愿的那样正确地工作。多数情况下,如果程序不能产生想要的输出,可以断定真正的问题(排除输入或语法错误)在于如何描述想要的东西。换句话说,应该考虑纠正问题的地方是描述想要的结果的表达式。表达式不完整或者公式表示得不正确。例如,如果程序计算下面的表达式:PAY = WEEKLY_SALARY * 52

2015-05-27 19:41:02 597

原创 Linux正则表达式-通配符

通配符元字符或者句点(.)被认为是与变量等价的。变量表示算术表达式中的任意值。在正则表达式中,句点(.)是代表除换行符以外的任意字符的通配符(在awk中,句点甚至可以匹配嵌入式换行符)。假定我们正在描述一个字符序列,使用通配符元字符可以指定任何字符都可以填充的一个位置。例如,如果要索索包含Intel系统微处理器的讨论文件,使用下面的正则表达式:80.86将匹配包含序列"8028

2015-05-24 22:19:24 612

原创 Linux正则表达式-反斜杠

元字符反斜杠(\)将元字符转换成普通字符(和将普通字符转换成元字符)。它强制将任意元字符解释为普通文字,以便匹配该字符本身。例如,句点(.)是元字符,如果想匹配句点,那么就需要用反斜杠对其进行转义。下面的正则表达式匹配由3个空格跟随的句点。\.□□□反斜杠常用于匹配以句点开始的troff请求或宏。\.nf还可以用反斜杠转义反斜杠。例如,troff中的

2015-05-23 21:07:09 1662

原创 Linux正则表达式-元字符

我们已经看过了表达式中的两个基本元素:1.以一个字面值或变量表示的值。2. 一个操作符。正则表达式是由这些相同的元素组成的。除元字符除外,都被解释为只匹配它本身的字面值。元字符汇总特殊字符用途.匹配除换行符以外的任意单个字符。在awk 中,句点也能匹配换行符。*匹配任意一个(包括零个)在它面前的

2015-05-22 22:18:43 1133

原创 Linux正则表达式-表达式

你可能熟悉一个计算器解释的表达式。请看下面的算术表达式:2+4"2加4" 出几个常数或字面值和一个操作符组成。计算器程序必须能够识别,例如, "2" 是数字常数而加号表示一个操作符,而不能解释为"+"字符。表达式告诉计算机如何产生结果。尽管我们真正想要的就是"2+4"的结果,但我们不能简单地告诉计算机返回6。我们指示计算机计算表达式并返回值。表达式可以比"2+4"更复杂,事实上,它

2015-05-21 21:25:27 448

原创 用户自定义函数

举例来说明$ cat datafilenorthwest  NW  Joel Craig     3.0   .98   3    4western    WE  Sharon Kelly   5.3   .97   5    23southwest  SW  Chris Foster   2.7   .8    2    18southern   SO  

2015-05-20 21:15:23 823

原创 awk控制函数

直接来例子$ cat datafilenorthwest  NW  Joel Craig     3.0   .98   3    4western    WE  Sharon Kelly   5.3   .97   5    23southwest  SW  Chris Foster   2.7   .8    2    18southern   SO  

2015-05-19 19:10:07 476

commons-io-2.4.jar

建议和commons-fileupload-1.3.jar一同使用

2013-05-05

commons-fileupload-1.3.jar

使用commons-fileupload-1.3.jar的同时,还需要使用commons-io.jar

2013-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除