文章分类 -  【005】Shell编程

1
摘要:原文:http://blog.chinaunix.net/uid-21374062-id-3189744.html两者排序区别:asort 是对数组的值进行排序,并且会丢掉原先键值;asorti是对数组的下标进行排序。数据文件:12 3478 9023 451. awk是关联数组。for…in循环输出时候,默认打印出来是无序数组。[root@zhenjiang ~]# awk '{a[$1]=$2}END{for(i in a) print i,a[i]}' test78 9012 3423 452. asort排序输出[root@zhenjiang ~]# awk ' 阅读全文
posted @ 2012-10-09 21:54 xiaolongxia 阅读(509) 评论(0) 推荐(0)
摘要:用awk进行文本处理,少不了就是它的数组处理。那么awk数组有那些特点,一般常见运算又会怎么样呢。我们先看下下面的一些介绍,结合例子我们会讲解下它的不同之处。在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。例如:一、定义方法1:可以用数值作数组索引(下标)Tarray[1]=“cheng mo”Tarray[2]=“800927”2:可以用字符串作数组索引(下标)Tarray[“first”]=“cheng ”Tarray[“last”]=”mo 阅读全文
posted @ 2012-10-09 21:32 xiaolongxia 阅读(116) 评论(0) 推荐(0)
摘要:1、asort()函数,对数组内容进行排序,返回数组长度相关:sqilt函数将字符串分割成数组,返回数组长度、length可以返回字符串和数组长度。注意:输出数组内容(无序,有序输出):[chengmo@localhost ~]$ awk 'BEGIN{info="it is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'4 test1 it2 is3 afor…in 输出,因为数组是关联数组,默认是无序的。所以通过for…in 得到是无序的数组。如果需要得到有序数组,需 阅读全文
posted @ 2012-10-09 21:31 xiaolongxia 阅读(137) 评论(0) 推荐(0)
摘要:linux之awk用法原文:http://www.cnblogs.com/dong008259/archive/2011/12/06/2277287.htmlawk是一个非常棒的数字处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理。运行效率高,而且代码简单,对格式化的文本处理能力超强。awk中每一行表示一个记录,而且awk、sed都是以行为处理单位。先来一个例子: 文件a,统计文件a的第一列中是浮点数的行的浮点数的平均值。用awk来实现只需要一句话就可以搞定1 $cat a2 1.021 333 1#.ll 444 2.53 65 ss ... 阅读全文
posted @ 2012-10-09 19:13 xiaolongxia 阅读(131) 评论(0) 推荐(0)
摘要:sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。sort的-u选项 (去除重复行)它的作用很简单,就是在输出行中去除重复行。sort的-r选项(降序,默认升序)sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。sort的-o选项(将结果重新写入文件)由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。[rocrocket@rocrocket pr 阅读全文
posted @ 2012-10-09 16:40 xiaolongxia 阅读(141) 评论(0) 推荐(0)
摘要:sed "s/test/test2/g" myfie.txt#将文件myfile中的test替换为test2,g表示全局globle 阅读全文
posted @ 2012-10-08 11:11 xiaolongxia 阅读(90) 评论(0) 推荐(0)
摘要:杀死进程栗子: 1 #!/bin/bash 2 #kill_process.sh 3 #取得当前进程号 4 current_PID=$$ 5 #获得特定进程的进程号并重定向到一个临时文件中 6 ps -aux|grep "/usr/sbin/httpd" |grep -v "grep" | awk '{print $2}'>/tmp/${current_PID}.txt 7 #命令块开始 8 #for pid in `cat /tmp/${current_PID}.txt` 9 #do10 #{11 # echo "kil 阅读全文
posted @ 2012-10-08 10:49 xiaolongxia 阅读(147) 评论(0) 推荐(0)
摘要:本章详解运行级别 inittab 启动应用程序3.1 运行级别运行级别目录(/etc/rcN.d)ubuntu下在目录/etc下当前运行级别命令(runlevel)运行级别目录文件格式(SXXscript,KXXscript)script表示脚本名字,S表示该运行级别被启动,XX表示数字,对应启动顺序,K表示不要被启动3.2 inittab对于redhat系统来讲,运行级别控制文件为:/etc/inittab对于ubuntu系统来讲,运行级别控制文件为:/etc/init/rc-sysinit.conf解释:在Ubuntu 6.1之后,开始用upstart替代init,主要脚本都在/e... 阅读全文
posted @ 2012-10-08 10:15 xiaolongxia 阅读(204) 评论(0) 推荐(0)
摘要:原文:http://www.linuxso.com/command/df.htmllinux中df命令参数功能:检查文件系统的磁盘空间占用情况,有点类似windows下c、d盘使用显示情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。语法:df[选项]说明:linux中df命令可显示所有文件系统对i节点和磁盘块的使用情况。该命令各个选项的含义如下: -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。 -k 以k字节为单位显示。 -i 显示i节点信息,而不是磁盘块。 -t 显示各指定类型的文件系统的磁盘空间使用情况。 ... 阅读全文
posted @ 2012-10-06 10:04 xiaolongxia 阅读(1924) 评论(0) 推荐(0)
摘要:本章详解日志文件信号trap捕捉信号evallogger2.1 日志文件创建日志文件的重要性以时间为标识的日志文件以进程号为标识的临时文件eg.以时间标识 1 #!/bin/bash 2 #datelog.sh 3 #当前日期 4 current_date=`date "+%Y%m%d"` 5 #今天的日志文件名 6 todaylog="log/${current_date}.log" 7 #如果日志文件不存在,创建一个 8 if [ ! -f $todaylog ] 9 the 10 touch $todaylog11 fi12 13 log_time 阅读全文
posted @ 2012-10-05 16:09 xiaolongxia 阅读(140) 评论(0) 推荐(0)
摘要:第一章 深入讨论:深入讨论awk 深入讨论<<第二章 日志文件:日志文件信号trap捕捉信号evallogger第三章 运行级别脚本介绍:运行级别 inittab 启动应用程序第四章 几个脚本例子:kill_processes.sh cpdir.sh menu.sh1 #!/bin/bash2 #awkif3 4 echo "210-219网段的访问量是:`awk '{if ($1~/^21[0-9]/) print $0}' www.og |wc -l`"5 echo "非210-219网段的访问量是:`awk '{if ($ 阅读全文
posted @ 2012-10-04 20:31 xiaolongxia 阅读(297) 评论(0) 推荐(0)
摘要:本章详解shift命令 getopts7.1 shift每次默认将参数位置向左移动一位shift n表示左移n位eg. 1 #!/bin/bash 2 #opt2 3 usage() 4 { 5 echo "usage:`basename $0` filenames" 6 } 7 totalline=0 8 9 if [ $# -lt 2 ]; then10 usage11 fi12 13 while [$# -ne 0 ]14 do15 line=`cat $1`|wc -l`16 echo "$1 : ${line}17 totalline=$... 阅读全文
posted @ 2012-10-04 16:43 xiaolongxia 阅读(133) 评论(0) 推荐(0)
摘要:本章详解定义函数 函数调用 参数传递 函数文件 载入和删除函数 函数返回状态6.1 函数定义shell允许将一组命令集或语句行程一个i额可用快,这些快成为shell函数定义函数的格式为: 1 函数名 () 2 { 3 命令 4 ...... 5 } 6 7 function 函数名( ) 8 { 9 ......10 }6.1 函数调用(hello 是一个自定义的函数)直接写函数名就行 hello6.2 参数传递向函数传递参数就像在脚本中使用位置变量$1,$2...$9。 hello xiaolong6.3 函数文件导入函数文... 阅读全文
posted @ 2012-10-04 16:14 xiaolongxia 阅读(91) 评论(0) 推荐(0)
摘要:讲解知识点控制结构 if then else 语句 case语句 for循环 until循环 while循环 break控制 continue控制4.1.2 if语句语句格式:1 if 条件1;then3 命令14 elif 条件2;then6 命令27 else8 命令39 fi注意:if语句必须以单词fi终止通过man test命令进行查询test使用方法4.2.1 case 语句case语句多位选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。 1 case 值 in 2 模式1) 3 ... 阅读全文
posted @ 2012-10-02 21:05 xiaolongxia 阅读(184) 评论(0) 推荐(0)
摘要:echo '-e' 回车换行 ‘-n’ 回车不换行eg. 3.2.1 readread语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量read var1 var2 ... 如果只指定了一个变量,那么read将会把所有的输入赋给该变量,知道遇到第一个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符.3.3.1 catcat 是一个简单而通用的命令,可以用来显示文件内容、创建文件,还可以用来显示控制字符 -v 显示控制字符 它不会在文件分页符处停下来;它会一下显示完整个文件。如果希望每次显示一夜,可以用mor 阅读全文
posted @ 2012-10-02 15:33 xiaolongxia 阅读(596) 评论(0) 推荐(0)
摘要:讲解重点: 本地变量 环境变量 变量替换 位置变量 标准shell变量 特殊变量 影响变量的命令 引号 运算符 表达式替换 运算符的优先级一、变量本地变量 环境变量 变量替换(显示变量) 位置变量 标准shell变量 特殊变量 影响变量的命令1、本地变量(局部)设置、显示 退出后将不存在 设置变量:VAR=“test" 设置只读变量:readonly VAR (适用全局变量) 显示查看变量:set 、readonly(查看只读变量) 取消变量设置:unset2、环境变量(全局)设置、显示 退出后仍然存在 设置变量:exprot VAR="test" 显示变量:en 阅读全文
posted @ 2012-10-02 09:54 xiaolongxia 阅读(124) 评论(0) 推荐(0)
摘要:原文:http://blog.chinaunix.net/space.php?uid=9078996&do=blog&id=2010308正则表达式基础在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,,它可以匹配"testing"和"123testing"等字符串,但是不能匹配"Testing"。要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。元字符描述.匹配任何单个字符。例 阅读全文
posted @ 2012-09-27 17:11 xiaolongxia 阅读(124) 评论(0) 推荐(0)
摘要:原文:http://www.cnblogs.com/wdpp/archive/2012/02/28/2386683.htmlxargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,下面是一些如何有效使用xargs的 阅读全文
posted @ 2012-09-26 16:37 xiaolongxia 阅读(115) 评论(0) 推荐(0)
摘要:原文:http://blog.csdn.net/alex_sym/article/details/7409566su: Swith user 切换用户,切换到root用户cat: Concatenate 串联uname: Unix name 系统名称df: Disk free 空余硬盘du: Disk usage 硬盘使用率chown: Change owner 改变所有者chgrp: Change group 改变用户组ps: Process Status 进程状态tar: Tape archive 解压文件chmod: Change mode 改变模式umount... 阅读全文
posted @ 2012-09-26 10:28 xiaolongxia 阅读(268) 评论(0) 推荐(0)
摘要:一、linux shell之列举目录下的所有文件(含子目录)1.列举出本目录下的所有文件1 #!/bin/bash2 for i in `ls`;do 3 #注意:这里的是`,而不是但引号,是esc键下面那个!@@@4 echo $i5 done2.列举出本目录下的所有文件(包含子目录)。 1 #!/bin/bash 2 function lsdir() 3 { 4 for i in `ls`;do 5 if [ -d "$i" ] ;then 6 cd ./$i 7 lsdir 8 else 9 echo $i10 fi11... 阅读全文
posted @ 2012-09-24 21:21 xiaolongxia 阅读(114) 评论(0) 推荐(0)

1