博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unix下几个有用的小shell脚本(转)
阅读量:2517 次
发布时间:2019-05-11

本文共 3117 字,大约阅读时间需要 10 分钟。

unix下几个有用的小shell脚本(转)[@more@]替换字符串的脚本trans_par.pl,它可以把unix下文本文件里出现的字符进行替换,生成新的.new文件。
----------------------------------------------------------------------------------------------
#!/usr/bin/perl
# parameter_0 is filename
# parameter_1 is source char will be replaced
# parameter_2 is target char
$filename=$ARGV[0];
$filecontent='';
undef $/;
open(FH,$filename);
$filecontent = ;
close FH;
$filecontent =~ s/$ARGV[1]/$ARGV[2]/g;
open(FH,">${filename}.new");
print FH $filecontent;
close FH;
----------------------------------------------------------------------------------------------
调用方式举例:
$cat a.txt
1234 1234
1234 * 4321
$./trans_par.pl a.txt '12' '78'
$cat a.txt.new
7834 7834
7834 * 4321
文件名取子串的方法:
after_file_name=`echo $file_name|awk '{print substr($file_name,1,12)}'`
pre_file_name=`echo $file_name|awk '{print substr($file_name,1,2)}'`
Unix格式文件转换成Dos格式文件:
unix2dos -q -k filename
Dos格式文件转换成Unix格式文件:
dos2unix -q -k filename
根据定时生成的文本文件字节数是否一样来判断程序是否运行正常,如果一段时间内数据没有变化,发邮件通知.
----------------------------------------------------------------------------------------------
cd /beijing
dt2=`date --date '10 minutes ago' "+%Y%m%d%H%M00"`;export dt2
filename2=english_company_name_$dt2.txt;export filename2
ls -l $filename2>filename2.txt
cat /beijing/filename2.txt|awk '{print $5}'>size2.txt
dt1=`date --date '5 minutes ago' "+%Y%m%d%H%M00"`;export dt1
filename1=english_company_name_$dt1.txt;export filename1
ls -l $filename1>filename1.txt
cat /beijing/filename1.txt|awk '{print $5}'>size1.txt
dt0=`date "+%Y%m%d%H%M00"`;export dt0
filename0=english_company_name_$dt0.txt;export filename0
ls -l $filename0>filename0.txt
cat /beijing/filename0.txt|awk '{print $5}'>size0.txt
echo 'file is ok'
filename2_size=`cat /beijing/size2.txt`;export filename2_size
filename1_size=`cat /beijing/size1.txt`;export filename1_size
filename0_size=`cat /beijing/size0.txt`;export filename0_size
echo $filename2_size
echo $filename1_size
echo $filename0_size
if [ -z $filename2_size ] || [ -z $filename1_size ] || [ -z $filename0_size ]; then
echo 'no such files'
else
if [ $filename2_size -eq $filename1_size ] && [ $filename1_size -eq $filename0_size ]; then
echo 'something is wrong,please look at'
cat /beijing/bin/error.txt /beijing/filename* >/beijing/error_mail.txt
mail -s 'alert mail' /dev/null 2>&1
else
echo 'everything is ok'
fi
fi
----------------------------------------------------------------------------------------------
说明:/beijing/bin/error.txt 文件为邮件正文部分
unix shell 里面比较字符写法: (我经常不记得,用的时候需要找文档, 现在把它们列出来)
-eq 等于 -z 空串
-ne 不等于 = 两个字符相等
-gt 大于 != 两个字符不等
-lt 小于 -n 非空串
-le 小于等于
-ge 大于等于
命令的执行顺序符号:
命令1 && 命令2
&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;
换句话说,“如果这个命令执行成功&&那么执行这个命令”。
命令1 || 命令2
如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);
或者换句话说,“如果这个命令执行失败了|| 那么就执行这个命令”
文件状态测试符号:
-d 目录 -s 文件长度大于0、非空
-f 正规文件 -w 可写
-L 符号连接 -u 文件有suid位设置
-r 可读 -x 可执行
测试文件状态是否为OK,但是有时要比较两个文件状态。shell提供三种逻辑操作完成此功能:
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10617542/viewspace-949196/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10617542/viewspace-949196/

你可能感兴趣的文章
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Swift code into Object-C 出现 ***-swift have not found this file 的问题
查看>>
为什么你的App介绍写得像一坨翔?
查看>>
RTImageAssets插件--@3x可自动生成@2x图片
查看>>
iOS开发的一些奇巧淫技
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>