当前位置: 首页 > news >正文

jsp网站开发用到什么技术著名的外贸网站

jsp网站开发用到什么技术,著名的外贸网站,胶南网站建设哪家好,免费咨询英文ref#xff1a;http://blog.chinaunix.net/uid-429659-id-122573.html awk使用手册 作者#xff1a;awk使用手册什么是awk? 你可能对UNIX比较熟悉#xff0c;但你可能对awk很陌生#xff0c;这一点也不奇怪#xff0c;的确#xff0c;与其优秀的功能相比#xff0c;awk…refhttp://blog.chinaunix.net/uid-429659-id-122573.html awk使用手册 作者awk使用手册什么是awk? 你可能对UNIX比较熟悉但你可能对awk很陌生这一点也不奇怪的确与其优秀的功能相比awk还远没达到它应有的知名度。awk是什么与其它大多数UNIX命令不同的是从名字上看我们不可能知道awk的功能它既不是具有独立意义的英文单词也不是几个相关单词的缩写。事实上awk是三个人名的缩写他们是Aho、(Peter)Weinberg和(Brain)Kernighan。正是这三个人创造了awk---一个优秀的样式扫描与处理工具。 AWK的功能是什么与sed和grep很相似awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能它几乎可以完成grep和sed所能完成的全部工作同时它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上awk的确拥有自己的语言awk程序设计语言awk的三位创建者已将它正式定义为样式扫描和处理语言。 为什么使用awk? 即使如此你也许仍然会问我为什么要使用awk? 使用awk的第一个理由是基于文本的样式扫描和处理是我们经常做的工作awk所做的工作有些象数据库但与数据库不同的是它处理的是文本文件这些文件没有专门的存储格式普通的人们就能编辑、阅读、理解和处理它们。而数据库文件往往具有特殊的存储格式这使得它们必须用数据库处理程序来处理它们。既然这种类似于数据库的处理工作我们经常会遇到我们就应当找到处理它们的简便易行的方法UNIX有很多这方面的工具例如sed 、grep、sort以及find等等awk是其中十分优秀的一种。 使用awk的第二个理由是awk是一个简单的工具当然这是相对于其强大的功能来说的。的确UNIX有许多优秀的工具例如UNIX天然的开发工具C语言及其延续C就非常的优秀。但相对于它们来说awk完成同样的功能要方便和简捷得多。这首先是因为awk提供了适应多种需要的解决方案从解决简单问题的awk命令行到复杂而精巧的awk程序设计语言这样做的好处是你可以不必用复杂的方法去解决本来很简单的问题。例如你可以用一个命令行解决简单的问题而C不行即使一个再简单的程序C语言也必须经过编写、编译的全过程。其次awk本身是解释执行的这就使得awk程序不必经过编译的过程同时这也使得它与shell script程序能够很好的契合。最后awk本身较C语言简单虽然awk吸收了C语言很多优秀的成分熟悉C语言会对学习awk有很大的帮助但awk本身不须要会使用C语言——一种功能强大但需要大量时间学习才能掌握其技巧的开发工具。 使用awk的第三个理由是awk是一个容易获得的工具。与C和C语言不同awk只有一个文件(/bin/awk)而且几乎每个版本的UNIX都提供各自版本的awk你完全不必费心去想如何获得awk。但C语言却不是这样虽然C语言是UNIX天然的开发工具但这个开发工具却是单独发行的换言之你必须为你的UNIX版本的C语言开发工具单独付费当然使用D版者除外获得并安装它然后你才可以使用它。 基于以上理由再加上awk强大的功能我们有理由说如果你要处理与文本样式扫描相关的工作awk应该是你的第一选择。在这里有一个可遵循的一般原则如果你用普通的shell工具或shell script有困难的话试试awk,如果awk仍不能解决问题则便用C语言如果C语言仍然失败则移至C。 awk的调用方式 前面曾经说过awk提供了适应多种需要的不同解决方案它们是 一、awk命令行你可以象使用普通UNIX命令一样使用awk在命令行中你也可以使用awk程序设计语言虽然awk支持多行的录入但是录入长长的命令行并保证其正确无误却是一件令人头疼的事因此这种方法一般只用于解决简单的问题。当然你也可以在shell script程序中引用awk命令行甚至awk程序脚本。 二、使用-f选项调用awk程序。awk允许将一段awk程序写入一个文本文件然后在awk命令行中用-f选项调用并执行这段程序。具体的方法我们将在后面的awk语法中讲到。 三、利用命令解释器调用awk程序利用UNIX支持的命令解释器功能我们可以将一段awk程序写入文本文件然后在它的第一行加上: #!/bin/awk -f 并赋予这个文本文件以执行的权限。这样做之后你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了。 $awk脚本文本名 待处理文件 awk的语法 与其它UNIX命令一样awk拥有自己的语法 awk [ -F re] [parameter...] [prog] [-f progfile][in_file...] 参数说明 -F re:允许awk更改其字段分隔符。 parameter: 该参数帮助为不同的变量赋值。 prog: awk的程序语句段。这个语句段必须用单拓号和括起以防被shell解释。这个程序语句段的标准形式为 pattern {action} 其中pattern参数可以是egrep正则表达式中的任何一个它可以使用语法/re/再加上一些样式匹配技巧构成。与sed类似你也可以使用,分开两样式以选择某个范围。关于匹配的细节你可以参考附录如果仍不懂的话找本UNIX书学学grep和sed作者是在学习ed时掌握匹配技术的。action参数总是被大括号包围它由一系统awk语句组成各语句之间用;分隔。awk解释它们并在pattern给定的样式匹配的记录上执行其操作。与shell类似你也可以使用“#”作为注释符它使“#”到行尾的内容成为注释在解释执行时它们将被忽略。你可以省略pattern和action之一但不能两者同时省略当省略pattern时没有样式匹配表示对所有行记录均执行操作省略action时执行缺省的操作——在标准输出上显示。 -f progfile:允许awk调用并执行progfile指定有程序文件。progfile是一个文本文件他必须符合awk的语法。 in_file:awk的输入文件awk允许对多个输入文件进行处理。值得注意的是awk不修改输入文件。如果未指定输入文件awk将接受标准输入并将结果显示在标准输出上。awk支持输入输出重定向。 awk的记录、字段与内置变量 前面说过awk处理的工作与数据库的处理方式有相同之处其相同处之一就是awk支持对记录和字段的处理其中对字段的处理是grep和sed不能实现的这也是awk优于二者的原因之一。在awk中缺省的情况下总是将文本文件中的一行视为一个记录而将一行中的某一部分作为记录中的一个字段。为了操作这些不同的字段awk借用shell的方法用$1,$2,$3...这样的方式来顺序地表示行记录中的不同字段。特殊地awk用$0表示整个行记录。不同的字段之间是用称作分隔符的字符分隔开的。系统默认的分隔符是空格。awk允许在命令行中用-F re的形式来改变这个分隔符。事实上awk用一个内置的变量FS来记忆这个分隔符。awk中有好几个这样的内置变量例如记录分隔符变量RS、当前工作的记录数NR等等本文后面的附表列出了全部的内置变量。这些内置的变量可以在awk程序中引用或修改例如你可以利用NR变量在模式匹配中指定工作范围也可以通过修改记录分隔符RS让一个特殊字符而不是换行符作为记录的分隔符。 例:显示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段第三字段和第七字段 awk -F % NR7,NR15 {printf $1 $3 $7} awk的内置函数 awk之所以成为一种优秀的程序设计语言的原因之一是它吸收了某些优秀的程序设计语言例如C语言的许多优点。这些优点之一就是内置函数的使用awk定义并支持了一系列的内置函数由于这些函数的使用使得awk提供的功能更为完善和强大例如awk使用了一系列的字符串处理内置函数(这些函数看起来与C语言的字符串处理函数相似其使用方式与C语言中的函数也相差无几)正是由于这些内置函数的使用使awk处理字符串的功能更加强大。本文后面的附录中列有一般的awk所提供的内置函数这些内置函数也许与你的awk版本有些出入因此在使用之前最好参考一下你的系统中的联机帮助。 作为内置函数的一个例子我们将在这里介绍awk的printf函数这个函数使得awk与c语言的输出相一致。实际上awk中有许多引用形式都是从C语言借用过来的。如果你熟悉C语言你也许会记得其中的printf函数它提供的强大格式输出功能曾经带我们许多的方便。幸运的是我们在awk中又和它重逢了。awk中printf几乎与C语言中一模一样如果你熟悉C语言的话你完全可以照C语言的模式使用awk中的printf。因此在这里我们只给出一个例子如果你不熟悉的话请随便找一本C语言的入门书翻翻。 例:显示文件myfile中的行号和第3字段 $awk {printf%03d%s\n,NR,$1} myfile 在命令行使用awk 按照顺序我们应当讲解awk程序设计的内容了但在讲解之前我们将用一些例子来对前面的知识进行回顾这些例子都是在命令行中使用的由此我们可以知道在命令行中使用awk是多么的方便。这样做的原因一方面是为下面的内容作铺垫另一方面是介绍一些解决简单问题的方法我们完全没有必要用复杂的方法来解决简单的问题----既然awk提供了较为简单的方法的话。 例显示文本文件mydoc匹配含有字符串sun的所有行。 $awk /sun/{print} mydoc 由于显示整个记录全行是awk的缺省动作因此可以省略action项。 $awk /sun/ mydoc 例下面是一个较为复杂的匹配的示例 $awk /[Ss]un/,/[Mm]oon/ {print} myfile 它将显示第一个匹配Sun或sun的行与第一个匹配Moon或moon的行之间的行并显示到标准输出上。 例下面的示例显示了内置变量和内置函数length的使用 $awk length($0)80 {print NR} myfile 该命令行将显示文本myfile中所有超过80个字符的行号在这里用$0表示整个记录行同时内置变量NR不使用标志符$。 例作为一个较为实际的例子我们假设要对UNIX中的用户进行安全性检查方法是考察/etc下的passwd文件检查其中的passwd字段第二字段是否为*如不为*则表示该用户没有设置密码显示出这些用户名第一字段。我们可以用如下语句实现 #awk -F: $2 {printf(%s no password!\n,$1} /etc/passwd 在这个示例中passwd文件的字段分隔符是“”因此必须用-F来更改默认的字段分隔符这个示例中也涉及到了内置函数printf的使用。 awk的变量 如同其它程序设计语言一样awk允许在程序语言中设置变量事实上提供变量的功能是程序设计语言的其本要求不提供变量的程序设计语言本人还从未见过。 awk提供两种变量一种是awk内置的变量这前面我们已经讲过需要着重指出的是与后面提到的其它变量不同的是在awk程序中引用内置变量不需要使用标志符$回忆一下前面讲过的NR的使用。awk提供的另一种变量是自定义变量。awk允许用户在awk程序语句中定义并调用自已的变量。当然这种变量不能与内置变量及其它awk保留字相同在awk中引用自定义变量必须在它前面加上标志符$。与C语言不同的是awk中不需要对变量进行初始化awk根据其在awk中第一次出现的形式和上下文确定其具体的数据类型。当变量类型不确定时awk默认其为字符串类型。这里有一个技巧如果你要让你的awk程序知道你所使用的变量的明确类型你应当在在程序中给它赋初值。在后面的实例中我们将用到这一技巧。 运算与判断 作为一种程序设计语言所应具有的特点之一awk支持多种运算这些运算与C语言提供的几本相同如、-、*、/、%等等同时awk也支持C语言中类似、--、、-、、-之类的功能这给熟悉C语言的使用者编写awk程序带来了极大的方便。作为对运算功能的一种扩展awk还提供了一系列内置的运算函数如log、sqr、cos、sin等等和一些用于对字符串进行操作运算的函数如length、substr等等。这些函数的引用大大的提高了awk的运算功能。 作为对条件转移指令的一部分关系判断是每种程序设计语言都具备的功能awk也不例外。awk中允许进行多种测试如常用的等于、不等于、大于、大于等于、小于等于等等同时作为样式匹配还提供了~匹配于和~不匹配于判断。 作为对测试的一种扩充awk也支持用逻辑运算符:!(非)、与、||或和括号进行多重判断这大大增强了awk的功能。本文的附录中列出了awk所允许的运算、判断以及操作符的优先级。 awk的流程控制 流程控制语句是任何程序设计语言都不能缺少的部分。任何好的语言都有一些执行流程控制的语句。awk提供的完备的流程控制语句类似于C语言这给我们编程带来了极大的方便。 1、BEGIN和END: 在awk中两个特别的表达式BEGIN和END这两者都可用于pattern中参考前面的awk语法提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作在{}内将在awk开始扫描输入之前执行而END之后列出的操作将在扫描完全部的输入之后执行。因此通常使用BEGIN来显示变量和预置初始化变量使用END来输出最终结果。 例累计销售文件xs中的销售金额假设销售金额在记录的第三字段 $awk BEGIN { FS:;print 统计销售金额;total0} {print $3;totaltotal$3;} END {printf 销售金额总计%.2f,total} xs 注是shell提供的第二提示符如要在shell程序awk语句和awk语言中换行则需在行尾加反斜杠\ 在这里BEGIN预置了内部变量FS字段分隔符和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。 2、流程控制语句 awk提供了完备的流程控制语句其用法与C语言类似。下面我们一一加以说明 2.1、if...else语句: 格式 if(表达式) 语句1 else 语句2 格式中语句1可以是多个语句如果你为了方便awk判断也方便你自已阅读你最好将多个语句用{}括起来。awk分枝结构允许嵌套其格式为 if(表达式1 {if(表达式2 语句1 else 语句2 } 语句3 else {if(表达式3) 语句4 else 语句5 } 语句6 当然实际操作过程中你可能不会用到如此复杂的分枝结构这里只是为了给出其样式罢了。 2.2、while语句 格式为: while(表达式) 语句 2.3、do-while语句 格式为: do { 语句 }while(条件判断语句 2.4、for语句 格式为 for(初始表达式;终止条件;步长表达式) {语句} 在awk的 while、do-while和for语句中允许使用break,continue语句来控制流程走向也允许使用exit这样的语句来退出。break中断当前正在执行的循环并跳到循环外执行下一条语句。continue从当前位置跳到循环开始处执行。对于exit的执行有两种情况当exit语句不在END中时任何操作中的exit命令表现得如同到了文件尾所有模式或操作执行将停止END模式中的操作被执行。而出现在END中的exit将导致程序终止。 例为了 awk中的自定义函数 定义和调用用户自己的函数是几乎每个高级语言都具有的功能awk也不例外但原始的awk并不提供函数功能只有在nawk或较新的awk版本中才可以增加函数。 函数的使用包含两部分函数的定义与函数调用。其中函数定义又包括要执行的代码函数本身和从主程序代码传递到该函数的临时调用。 awk函数的定义方法如下 function 函数名(参数表){ 函数体 } 在gawk中允许将function省略为func但其它版本的awk不允许。函数名必须是一个合法的标志符参数表中可以不提供参数但在调用函数时函数名后的一对括号仍然是不可缺少的也可以提供一个或多个参数。与C语言相似awk的参数也是通过值来传递的。 在awk中调用函数比较简单其方法与C语言相似但awk比C语言更为灵活它不执行参数有效性检查。换句话说在你调用函数时可以列出比函数预计函数定义中规定的多或少的参数多余的参数会被awk所忽略而不足的参数awk将它们置为缺省值0或空字符串具体置为何值将取决于参数的使用方式。 awk函数有两种返回方式隐式返回和显式返回。当awk执行到函数的结尾时它自动地返回到调用程序这是函数是隐式返回的。如果需要在结束之前退出函数可以明确地使用返回语句提前退出。方法是在函数中使用形如return 返回值 格式的语句。 例下面的例子演示了函数的使用。在这个示例中定义了一个名为print_header的函数该函数调用了两个参数FileName和PageNumFileName参数传给函数当前使用的文件名PageNum参数是当前页的页号。这个函数的功能是打印显示出当前文件的文件名和当前页的页号。完成这个功能后这个函数将返回下一页的页号。 nawk BEGIN{pageno1;fileFILENAME pagenoprint_header(filepageno)#调用函数print_header printf(当前页页号是%d\n,pageno); } #定义函数print_header function print_header(FileName,PageNum){ printf(%s %d\n,FileName,PageNum); PageNum;return PageNUm; } } myfile 执行这个程序将显示如下内容 myfile 1 当前页页号是2 awk高级输入输出 1.读取下一条记录 awk的next语句导致awk读取下一个记录并完成模式匹配然后立即执行相应的操作。通常它用匹配的模式执行操作中的代码。next导致这个记录的任何额外匹配模式被忽略。 2.简单地读取一条记录 awk的 getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录那么getline将尤其有用。它完成一般字段的分离(设置字段变量$0 FNR NF NR)。如果成功则返回1失败则返回0到达文件尾。如果需简单地读取一个文件则可以编写以下代码 例示例getline的使用 {while(getline1) { #process the inputted fields } } 也可以使getline保存输入数据在一个字段中而不是通过使用getline variable的形式处理一般字段。当使用这种方式时NF被置成0FNR和NR被增值。 用户也可以使用getlinedatafile 或 printf(hello word!\n)datafile 5.输出到一个命令 awk中允许用如下方式将结果输出到一个命令 printf(hello word!\n)|sort-t, awk与shell script混合编程 因为awk可以作为一个shell命令使用因此awk能与shell批处理程序很好的融合在一起这给实现awk与shell程序的混合编程提供了可能。实现混合编程的关键是awk与shell script之间的对话换言之就是awk与shell script之间的信息交流:awk从shell script中获取所需的信息通常是变量的值、在awk中执行shell命令行、shell script将命令执行的结果送给awk处理以及shell script读取awk的执行结果等等。 1.awk读取Shell script程序变量 在awk中我们可以通过“$变量名”的方式读取sell scrpit程序中的变量。 例在下面的示例中我们将读取sell scrpit程序中的变量Name该变量存放的是文本myfile的撰写者awk将打印出这个人名。 $cat writename : # (#) # . . . Name张三 nawk BEGIN {nameName;\ printf(\t%s\t撰写者%s\n,FILENAME,name);}\ {...}END{...} myfile . . . 2.将shell命令的执行结果送给awk处理 作为信息传送的一种方法我们可以将一条shell命令的结果通过管道线|传递给awk处理 例示例awk处理shell命令的执行结果 $who -u | awk {printf(%s正在执行%s\n,$2,$1)} 该命令将打印出注册终端正在执行的程序名。 3.shell script程序读awk的执行结果 为了实现shell script程序读取awk执行的结果我们可以采取一些特殊的方法例如我们可以用变量名awk语句的形式将awk执行的结果存放入一个shell script变量。当然也可以用管道线的方法将awk执行结果传递给shell script程序处理。 例作为传送消息的机制之一UNIX提供了一个向其所有用户传送消息的命令wall意思是write to all写给所有用户该命令允许向所有工作中的用户终端发送消息。为此我们可以通过一段shell批处理程序wall.shell来模拟这一程序事实上比较老的版本中wall就是一段shell批处理程序 $cat wall.shell : # (#) wall.shell:发送消息给每个已注册终端 # cat /tmp/$$ #用户录入消息文本 who -u | awk {print $2} | while read tty do cat /tmp/$$$tty done 在这个程序里awk接受who -u命令的执行结果该命令打印出所有已注册终端的信息其中第二个字段是已注册终端的设备名因此用awk命令析出该设备名然后用while read tty语句循环读出这些文件名到变量shell script变量tty中作为信息传送的终结地址。 4.在awk中执行shell命令行----嵌入函数system() system()是一个不适合字符或数字类型的嵌入函数该函数的功能是处理作为参数传递给它的字符串。system对这个参数的处理就是将其作为命令处理也就是说将其当作命令行一样加以执行。这使得用户在自己的awk程序需要时可以灵活地执行命令或脚本。 例下面的程序将使用system嵌入函数打印用户编制好的报表文件这个文件存放在名为myreport.txt的文件中。为简约起见我们只列出了其END部分 . . . END {close(myreport.txt);system(lp myreport.txt);} 在这个示例中我们首先使用close语句关闭了文件myreport.txt文件然后使用system嵌入函数将myreport.txt送入打印机打印。 写到这里我不得不跟朋友们说再见了实在地说这些内容仍然是awk的初步知识电脑永远是前进的科学awk也不例外本篇所能做的只是在你前行的漫漫长途中铺平一段小小开端剩下的路还得靠你自己去走。老实说如果本文真能给你前行的路上带来些许的方便那本人就知足了 如对本篇有任何疑问请E-mail To:Chizlongyeah.net或到主页http://chizling.yeah.net中留言。 附录 1.awk的常规表达式元字符 \ 换码序列 ^ 在字符串的开头开始匹配 $ 在字符串的结尾开始匹配 . 与任何单个字符串匹配 [ABC] 与[]内的任一字符匹配 [A-Ca-c] 与A-C及a-c范围内的字符匹配按字母表顺序 [^ABC] 与除[]内的所有字符以外的任一字符匹配 Desk|Chair 与Desk和Chair中的任一个匹配 [ABC][DEF] 关联。与A、B、C中的任一字符匹配且其后要跟D、E、F中的任一个字符。 * 与A、B或C中任一个出现0次或多次的字符相匹配  与A、B或C中任何一个出现1次或多次的字符相匹配  与一个空串或A、B或C在任何一个字符相匹配 Blue|Blackberry 合并常规表达式与Blueberry或Blackberry相匹配 2.awk算术运算符 运算符 用途 ------------------ x^y x的y次幂 x**y 同上 x%y 计算x/y的余数求模 xy x加y x-y x减y x*y x乘y x/y x除y -y 负y(y的开关符号);也称一目减 y y加1后使用y(前置加 y 使用y值后加1后缀加 --y y减1后使用y(前置减 y-- 使用后y减1(后缀减 xy 将y的值赋给x xy 将xy的值赋给x x-y 将x-y的值赋给x x*y 将x*y的值赋给x x/y 将x/y的值赋给x x%y 将x%y的值赋给x x^y 将x^y的值赋给x x**y 将x**y的值赋给x 3.awk允许的测试 操作符 含义 xy x等于y x!y x不等于y xy x大于y xy x大于或等于y x     另一篇不错的帖子http://blog.csdn.net/hyholine/article/details/7254596 http://blog.csdn.net/hyholine/article/details/7254596  转载于:https://www.cnblogs.com/irockcode/p/6670237.html
http://www.pierceye.com/news/674983/

相关文章:

  • 网站充值接口怎么做国家企业官网查询系统
  • 厦门网站建设工程网站备案幕布大小
  • 做家教去什么网站滕州做网站哪家好
  • 深圳市涂能装饰设计公司网站网站建设活动策划方案
  • 建设三合一网站找设计公司上哪个网站
  • 代理ip做网站流量饭店网站模板
  • 保险网站查询软件开发工程师和程序员的区别
  • 江都区城乡建设局网站马局下载app下载安卓免费
  • 网站做后台kuler 网站
  • 北京建网站公司飞沐扬中信息网
  • 商河网站建设公司南县网站建设推荐
  • 湛江企业网站建站模板网站开发 平台
  • c做的网站app开发制作专业吗
  • 杭州做网站公司做网站的文章
  • 那里有制作网站公司做网站需要了解的内容
  • 网站防护怎么做企业网站建设的ppt
  • 凡科网的网站建设好用吗wordpress在线朗读
  • 闽侯县建设局网站营销网站seo推广费用
  • 长乐区住房和城乡建设局网站测网站打开的速度的网址
  • 手机网站产品展示模板wordpress评论改成微博
  • 后盾网原创实战网站建设教程做网站和编程序
  • 东莞整站优化推广公司找火速如何做网站连接
  • 做ppt的模板的网站想学服装设计怎么入门
  • 短视频网站如何做推广网站申请域名
  • 餐饮行业网站建设风格建网站费用
  • 北京网站建设与维护石家庄做淘宝网站
  • seo网站关键词优化费用linux wordpress 伪静态
  • 朋友做的网站图片不显示不出来的网站空间哪家公司的好
  • 外贸网站建设公司价格最全做暖暖网站
  • 手机网站建设代理商怎么自己开一个网站