Shell
文章平均质量分 64
Aniya
长期从事邮件服务器运维工作
展开
-
shell常见使用误区
[**Aniya**]#pwd/home/sysadmin/zhaoyj创建文件[**Aniya**]#for i in `seq 1 5`;do touch file$i;done查看文件[**Aniya**]#lsfile1 file2 file3 file4 file5 software[**Aniya**]#for i in "ls fil原创 2011-12-25 00:36:10 · 1258 阅读 · 0 评论 -
split分割文件
在Linux下,使用Split命令可以实现文件的分割,使用 cat 命令来完成分割文件的合并譬如,在下面 split 命令行中的 “12m” 表示分割后的每个文件为 12MB,“filename” 为待分割文件,分割后的文件自动命名为 xaa,xab,…Split原创 2011-08-11 16:10:17 · 1544 阅读 · 0 评论 -
shell脚本分割文件成相同行数的文件
使用shell脚本将testfile.txt文件(共7800行)分割成13个文件,每个文件600行,文件名的前缀是SplitFile[root@mx1 /home/sysadmin/zhaoyj]# cat testfile.txt |wc -l 7800原创 2011-08-11 15:55:55 · 1680 阅读 · 0 评论 -
shell语法报错:“awk: division by zero”
文本如下[root@mx31 /home/mail/t/i/a/domains/tianyacapital.com]# shm_read -a |grep '^DOMAIN'|head -10|awk '{print $5"\t"$15"\t"$18}'360cham原创 2011-08-05 14:44:05 · 10544 阅读 · 0 评论 -
脚本报错:Syntax error: redirection unexpected
我写的是这样一个脚本,目的是要将每台服务器上每个月总发量位居前200名的域 发送量 发送比例 插入到数据库里面脚本如下:(涉及到脚本的调用)#!/bin/shDATE=`date +"%Y-%m-%d %H:%M:%S"`TODAY=`date +%Y-%m原创 2011-08-05 13:17:41 · 13387 阅读 · 1 评论 -
判断当前时间是不是月末
FreeBSD[root@mx1 ~/crontab]# date +%Y-%m-%d #当前时间2011-08-02[root@mx1 ~/crontab]# a=`date -v -原创 2011-08-02 16:24:07 · 1929 阅读 · 0 评论 -
垃圾数据的整理
要处理的部分文本内容格式如下:Jul 12 09:28:17 mx1 spamd[2808]: spamd: identified spam (29.8/7.5) for (unknown):65534 in 2.4 seconds, 6104 bytes. Jul 12 09:原创 2011-07-12 17:56:58 · 1018 阅读 · 0 评论 -
substr() 函数
substr取部份字符串。语法: string substr(string string, int start, int [length]);返回值: 字符串函数种类: 资料处理内容说明本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若 s原创 2011-07-11 16:16:58 · 977 阅读 · 0 评论 -
sprintf() 函数
将字串格式化命令。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通 常用眼睛再把出错的代码多看几眼就看出来了。参数说明及应用举例sprint原创 2011-07-11 17:52:10 · 767 阅读 · 0 评论 -
统计一台服务器所有邮局发送和接收情况
#!/bin/sh####################################################################################################GAWK=/usr/local/bin/gawkFIND=/u原创 2011-07-13 14:15:24 · 887 阅读 · 0 评论 -
awk中的时间函数strftime() systime()
systime函数返回从1970年1月1日开始到当前时间(不计闰年)的整秒数利用strftime()函数格式化时间实例: $ awk '{ now = systime(); print now }'strftime函数使用C库中的strftime函数格式原创 2011-07-08 18:01:23 · 20390 阅读 · 0 评论 -
unexpected EOF while looking for matching ``'
报错提示:php-fpm_check.sh: line 55: unexpected EOF while looking for matching ``'php-fpm_check.sh: line 60: syntax error: unexpected end of原创 2011-09-22 11:13:58 · 33007 阅读 · 0 评论 -
shell合理运用巧妙提取IP地址
shell合理运用巧妙提取IP地址[root@XKWB5510 ~]# ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4 "/" $NF}'192.168.200.210/255.255.255.0 其实这句话的意识原创 2011-09-26 23:05:52 · 1652 阅读 · 0 评论 -
简单的awk基础练习题
今天闲来没事,做了几道简单的awk基础练习题,跟大家分享一下文件 file.txt的内容格式:文件中包含名字,电话号码和过去三个月里的捐款具体内容如下:Mike Harrington:[510] 548-1278:250:100:175Christian Dobbins:[408] 538-2358:155:90:201Susan Dalsass:[206] 654-6原创 2011-11-27 21:53:35 · 3258 阅读 · 1 评论 -
shell执行命令的方式
想写这篇文章还得从执行一个脚本说起nohup sh run.sh &看到这样执行脚本的方式,刚开始有点不知所措,经过一番理解之后才发现这样的执行方式考虑的真的很周全 用sh执行脚本好处是不管脚本有没有执行权限都可以被执行 【不管相对路径./run.sh还是绝对路径执行/home/sas/CMNEW/AdventNet/Sas/bin/run.sh ,都需要执行原创 2011-12-22 22:12:45 · 4804 阅读 · 0 评论 -
shell部分面试题
1.用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下。 #!/bin/bash#1.sh#判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下#file executable: chmod 755 1.shPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loc原创 2011-12-22 23:32:37 · 2119 阅读 · 0 评论 -
awk显示某一个字段在第几行第几列
今天最有收获的算是这篇blog了,虽然花了点时间去理解,不过还是蛮欣慰的总算是找出解决办法了,而且学到了新东西切入正题:这里面主要是awk里面使用for循环然后for循环又嵌套了if语句之后if语句里又用到了awk的条件表达式另外还可能涉及到定义awk内置变量原文件内容是[root@localhost zhaoyj]# cat file.txt原创 2011-12-18 22:59:09 · 7965 阅读 · 0 评论 -
sed巧妙获取软件包名字
package.txt文件中是一软件包的信息,我现在只想获取软件包的名字(即除去版本号和第一个数字前面的横杠-)[root@localhost zhaoyj]# cat package.txt python-0.3.1-1.1gnome-bluetooth-2.30.0-2.4libsmack-1.0prel-1.1package-groups-0.94-1.1gn原创 2011-12-18 19:42:57 · 1303 阅读 · 0 评论 -
awk删除文件最后一列
使用awk删除用特定分隔符分割的文件的最后一列该文件以“:”分隔符绿色标识的为文件的最后一列[root@localhost zhaoyj]#cat file.txt Mike Harrington:[510] 548-1278:250:100:25Christian Dobbins:[408] 538-2358:155:90:78Susan Dalsass:[2原创 2011-12-18 19:26:41 · 22423 阅读 · 0 评论 -
sed在特定的行前面或者后面加入另一个文件内容
这里主要是使用高级shell,涉及到模式空间和保持空间的概念原文件file.txt【含有insert行】[root@localhost zhaoyj]# cat file.txt Mike Harrington:[510] 548-1278:250:100:175Christian Dobbins:[408] 538-2358:155:90:201****原创 2011-12-18 19:14:01 · 4926 阅读 · 0 评论 -
shell解决乱码输出问题
在CU上看到这样一个帖子,一同学有这样的需求:现在的文件里内容大概都是这样的2011-11-29 7:12:00拢潞--隆茂脥卢虏陆驴陋脢录隆茂虏脦脢媒拢潞sqlid=5 areaid=019,110 startpc=192.168.50.97/m2dsbusin4/30/0010020022011-11-29 7:12:01拢潞--隆茂脥卢虏陆陆谩脢酶隆茂虏脦脢媒拢潞sqlid原创 2011-12-07 23:30:06 · 3054 阅读 · 1 评论 -
用shell查找局域网里哪些IP被占用
#!/bin/bashIP=192.168.1 #定义变量for i in `seq 0 255` #for循环,查找192.168.1.0-255的所有地址#for i in 192.168.1.{1,254}do ping -c 2 $IP.$i > /dev/null 2>&1 #ping 只发两个包,要不然不会自动结束,另外将屏幕输出信原创 2011-12-03 23:23:44 · 1396 阅读 · 0 评论 -
用shell计算闰年
该脚本只是为了练习,应该还有考虑不周的地方 #!/bin/bash #判断是否为闰年的脚本 if [ "$1" = "" ];then #如果没有位置参数 echo -n " The number is NULL,please input ! ! #则向屏幕输出提示信息 "原创 2011-12-03 23:16:18 · 3654 阅读 · 0 评论 -
grep命令基础练习题
常用的grep选项是:-c 只输出匹配行的计数。-i 不区分大小写(只适用于单字符)。-h 查询多文件时不显示文件名。-l 查询多文件时只输出包含匹配字符的文件名。-n 显示匹配行及行号。-s 不显示不存在或无匹配文本的错误信息。-v 显示不包含匹配文本的所有行。文件格式:第1列:城市位置编号。第2列:月份。第3列:存储代码及出库年份。第原创 2011-11-27 23:15:16 · 2276 阅读 · 0 评论 -
awk输出字段号以及对应的字段
awk输出字段号以及对应的字段[root@mx32 ~/crontab]# awk '{for (i=1;i1 DOMAINDomain2 Name3 :4 aoje.comAlias5 Domain6 Name7 :8 aoje.原创 2011-07-07 17:48:42 · 1242 阅读 · 0 评论 -
Awk实现求和、平均、最大值和最小值的计算操作
0、准备和数据文件比如有一个数据文件,只有一列(在之前可以通过各种手段过滤出只有数字这一列),比如操作的响应时间10101210211012513131601621212111411、求和cat data|awk '{sum+=$1} END {print "Sum = ", s原创 2011-07-07 15:09:33 · 1482 阅读 · 0 评论 -
用shell计算小数
<br />今天朋友给我处了一道难题<br />有一组数据,数据格式如下:每行一个数据,以列的形式存在,一共是140行<br />zhaoyj]# tail -7 num.txt <br />100.2457<br />100.2458<br />100.2459<br />100.2457<br />100.2456<br />100.2457<br />100.2455<br /> <br /> <br />用这些数据按照以下公式进行计算:<br /><br /> <br />在讲解这个公式之前我先给大原创 2011-05-29 18:53:00 · 4290 阅读 · 0 评论 -
SED、AWK、GREP与或匹配
<br /> A与B A或B<br />awk /A/&&/B/ /A/||/B/<br />grep grep A|grep B A/|B<br />sed /A/原创 2011-05-23 21:47:00 · 2113 阅读 · 0 评论 -
计算日期的shell程序
<br />$ date_offset.sh <br />usage() <br />{ <br />echo "使用方法:" <br />echo " date_offset.sh YYYY/MM/DD offset" <br />echo "/n举例:" <br />echo " date_offset.sh 2001/10/01 -1 返回: 2001/09/30" <br />echo " date_offset.sh 2001/10/原创 2011-05-26 19:55:00 · 968 阅读 · 0 评论 -
正则表达式
<br /> <br />正则表达式<br />文本文件的操作命令<br />cat、more 、less 、hard、 tail<br />正则表达式的命令<br />. 单一的字符 .* 任何一个字符<br />[abc] 当前位置有a、或b、或c [^abc] 除了abc 以外的任意字符<br />^a a开头的行 a& 以a结束的行<br />/< 以什么开头 /> 以什么结尾 ,表示的是单词<br />a* 任意多个a a? 一个或二个a a+ 相当于前面的合并 <br />a原创 2011-05-24 23:27:00 · 795 阅读 · 0 评论 -
SHELL 水平测试
有很多种 shell, 你熟悉几种? 各个 shell 的 home page 在那里?2. 为什么说 zsh 是目前为止功能最为强大的 shell.3. 为什么说 pdksh 功能较弱?4. ksh88 与 ksh93 有何区别?5. 为什么 shell 编程最好用 ksh?6. 你的系统都有哪些 shell? 版本是多少?7. 你知道 POSIX 吗?最新版本是多少?和你的 shell 有什么关系?8. /sbin/sh 和 /bin/sh 有何区别?9. 你分析过 1000 行以上的 shell 程序原创 2011-05-22 22:05:00 · 734 阅读 · 0 评论 -
为用户设置隐性密码
<br />!/bin/bash<br /># 为用户设置隐性密码<br />check_user()<br />{<br />if ! id oracle >/dev/null 2>&1<br />then<br />useradd oracle<br />fi<br />secceed=0<br /> while [ "$secceed" = "0" ]<br /> do<br /> STTY=`stty -g`<br /> stty -echo<br /> ec原创 2011-05-22 21:43:00 · 705 阅读 · 0 评论 -
用sed把每一行第一对小括号里的字符删掉
<br />(abc)<br />aa (a(d)xe)) (b) (c)fff<br />asdf(aakk<br />e)zz (ala)oe 这是inputfile 的内容,怎样才能得到<br /><br />aa xe)) (b) (c)fff<br />asdf(aakk<br />e)zz oe<br />求解答!!!<br />用sed把每一行第一对小括号里的字符删掉<br />原创 2011-05-22 20:21:00 · 2669 阅读 · 1 评论 -
Shell 的昨天今天和明天
Shell 的昨天今天和明天 昨天的命令是:<br />yesterdayformat=`date --date='yesterday' "+%Y-%m-%d_%H:%M:%S"`<br />echo $yesterdayformat<br />输出格式是:<br />2006-03-30_08:39:54<br /><br />明天的命令是:<br />tomorrowformat=`date --date='tomorrow' "+%Y-%m-%d_%H:%M:%S"`<br />echo $tom原创 2011-05-22 20:56:00 · 991 阅读 · 0 评论 -
GNU sed 提供了-i选项,为什么有人说sed -i 并不象 ed 一样真正的编辑文件
<br />cu上的一道题目:<br />问题:GNU sed 提供了-i选项,为什么有人说sed -i 并不象 ed 一样真正的编辑文件?(提示:观察文件改变前后的inode)<br />http://blog.csdn.net/ANLJF/archive/2011/05/19/6432879.aspx<br />注意审题的话,这题是二个文件编辑器的比较,<br />也有可能是提示的误导,这题大都知道-i 是用临时文件的机制,<br />但这道题如果不通过说明ed 的模式,再做sed -i 与ed 比较,转载 2011-05-20 00:32:00 · 1428 阅读 · 0 评论 -
GNU awk的$1=$1到底有什么作用?$0=$0呢?
<br />cu上出了个shell题:<br />http://bbs.chinaunix.net/thread-2319120-1-1.html<br />第八题:GNU awk的$1=$1到底有什么作用?$0=$0呢?<br />这题问得相当的细致。可能很多人已经常用这二个赋值语句,却半知半解。以下分二部分对这个题目进行分析<br />建议没心情,没耐心,没兴趣的人,只需要了解下第一部分,看第二部分就表看了,很罗嗦的。<br />第一部分:能过man上边的解析,回签这二个赋值语句的功能<br />第二部转载 2011-05-20 00:25:00 · 4023 阅读 · 0 评论 -
sed -if /script/scr.sedcc test.txt
CU上的问题5:这条语句有什么作用?sed -if /script/scr.sedcc test.txt这题看似简单 但没仔细看过man的人估计都会答错这题出的让我佩服的五体投地..题解:-i是参数 f是-i的子参数 意为rename的追加拓展名 不写则rename源文件名 即为覆盖/script/ 正则匹配s是替换函数(sed内部命令)c是替换分隔符sed -if /script/scr.sedcc test.txt 解析为 sed -iABC '/script/s/r.sed//' test.txt看过原创 2011-05-19 23:22:00 · 1125 阅读 · 0 评论 -
什么要使用Shell编程
<br />什么要使用Shell编程?<br />Linux操作系统是由UNIX操作系统发展起来的.UNIX操作系统中所体现出来的思想和哲学深沉的影响了现代其他的操作统.在UNIX系统中提供了许多不同的Shell程序.大多数的商业UNIX提供了Korn Shell,当然了我们也还有其他的Shell可以来用.虽然Shell看起来与Windows的命令行相类似,但是他显得更为的强大,可以以他的方式来运行更为复杂的程序.我们可以使用Shell进行更为快速和简单的编辑.另外在大多数的Linux基系统的安装提供了Sh原创 2011-05-24 23:05:00 · 760 阅读 · 0 评论 -
tr 用法
<br /> tr是Unix系统非常实用的工具,其实用tr做到的事情,几乎都可用sed做到,你可以把tr当作是实现sed许多基本功能的sed“简体”。我认为tr是简单的“字符”处理工具,而sed是功能非常强大的“字符串”处理工具。 【注意】tr是单个字符处理工具,而不是字符串处理工具! 我自己用过比较实用的例子如下: 1、将文件file中出现的"abc"替换为"xyz" # cat file | tr "abc" "xyz" > new_file 【注意】这里,凡是在file中出现的"a"字母,都替换成"x转载 2011-05-24 23:30:00 · 1183 阅读 · 0 评论 -
linux read 用法
<br /> <br />1、基本读取<br />read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中。下面是read命令<br />的最简单形式::<br />#!/bin/bash<br />echo -n "Enter your name:" //参数-n的作用是不换行,echo默认是换行<br />read name //从键盘输入<br />echo "hello $name,welc原创 2011-05-24 23:33:00 · 10770 阅读 · 3 评论