awk更是可以将一个记录根据指定分隔符分割为多个字段,然后处理字段,更为灵活。awk甚至可以看作一门编程宏猜迟语言,内部语言环境(语法)类似C语言。
shell是linux/蔽李unix的人机交互接口,将用户输入兆毕的命令翻译为内核可以执行的指令,其界面可以认为是我们平时看到的命令终端窗口。shell中可以调用外部程序,例如sed和awk。
shell+sed+awk的组合非常强大,足以应付日常 *** 作需求。
print ARGV[i]# 依次印出awk所记录的参数}’ $*执行结果如下:[root@myfreelinux pub]# bash analyse.awk first-arg second-argawkfirst-argsecond-arg解释说明:ARGC,ARGV[ ]是awk的内建变量。ARGC :是一整数,代表命令行上除了选项-v, -f 及其对应的参数之外所有参数的个数。ARGV[ ] 是一字符串数组,ARGV[0],ARGV[1],。。。ARGV[ARGC-1]分别代表命令行上相对应的参数。比如在这里执行的命令[root@myfreelinux pub]# bash analyse.awk first-arg second-arg,ARGC的值是3,ARGV[0]是awk,ARGV[1]的值为first-arg, ARGV[2]的值是second-arg。再比如#awk -vx=21-f program fir-data sec-data和#awk ‘{ print $1 ,$2 }’fir-data sec-data这两条ARGC 值都是3,ARGV[0]是awk,ARGV[1]是fir-data,ARGV[2]是sec-data,命令行上的-f program, -vx=21″,程序部分’{ print $1, $2}’ 都不会被列入ARGC和ARGV[ ]中。awk 利芦姿用ARGC 来判断要打开的数据文件的个数,但是用户可以强行更改ARGC的值;比如将ARGC的值被用户设置为1,那么awk将被蒙骗,误以为命令行上没有数据文件文件, 所以不会以ARGV[1],ARGV[2]等作为文件名来打开文件并读取数据;但是在程序中可以使用ARGV[1],ARGV[2]等变量来取得命令行上数据文件的数据。现在有一个awk程序内容如下:[root@myfreelinux pub]# cat test1.awk#!/bin/awk -fBEGIN{for(i=0i<ARGCi++)print ARGV[i]}执行以上程序的结果如下:[root@myfreelinux pub]# awk -f test1.awk arrive.dat today_result1awkarrive.dattoday_result1加入将test1.awk的内容更改成test2.awk的内容如下:[root@myfreelinux pub]# cat test2.awk#!/bin/awk -fBEGIN{number=ARGC#用number 记住实际的参数个数ARGC=2#设置ARGC=2,awk将以为只有一个资料文件for(i=0i<ARGCi++)print ARGV[i]}执行并查看运行结果:[root@myfreelinux pub]# awk -f test2.awk arrive.dat today_result1 today_result2awkarrive.dat这个时候会发现,陪困绝虽然同样ARGC=3,但是人为的设置ARGC=2,后,awk在执行的时候,只认为有一个参数arrive.dat。将test2.awk修改成以下内容:[root@myfreelinux pub]# cat test3.awk#!/bin/awk -fBEGIN{number=ARGCARGC=2for(i=0i<ARGCi++)print ARGV[i]for(i=ARGCi<numberi++)print ARGV[i]}运行并查看运行结果如下:尺孝显然,通过修改ARGC可以修改awk能够识别的参数的个数,但是实际存在的ARGV的内容,仍然可以访问的。比如在这里ARGC设置为2后,awk只能打开ARGV[1]=arrive.dat,但是我们可以使用ARGV[2],ARGV[3]取得命令行上的参数today_result1,today_result2。shell命令awk '{print $0}' 1.txt 的意思是输出1.txt文件的所有内容。
shell命令awk '{print $1}' 1.txt的意思是输出1.txt文件的第一列内容。
Shell是系统的用户界面,提供了用户与内核进行交互 *** 作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上袜侍Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
扩展资料:
shell的种类:
Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。
1、Bourne shell是UNⅨ最初使用的shell,并且在每种UNⅨ上都可以使用。Bourne shell在shell编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。
Linux *** 作系统缺省的shell是Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。
Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。
2、C shell是一种比Bourne shell更适于编程的shell,它的语法与C语言很相似。Linux为喜欢使用C shell的人提供了Tcsh。Tcsh是C shell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校正、历史命令替换、作业控制和类似C语言的语法,它不仅和Bash shell是提示符告祥吵兼容,而且还提供比Bash shell更多的提示符参数。
3、Korn shell集合了C shell和Bourne shell的优点并宴腔且和Bourne shell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持任务控制,可以在命令行上挂起、后台执行、唤醒或终止程序。
参考资料来源:百度百科-Linux Shell
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)