shell脚本对于sed和awk等使用
来源:互联网 发布:sql语句怎么修改列名 编辑:程序博客网 时间:2024/06/01 08:44
#! /bin/bash
# ./bf.sh /tmp XX.XX.XXX.XXX
SUCCESS=0
LockFile="bflock.lock"
errno_gsh=0
bf_all=1
bf_ip=""
if [ "$#" -ne "1" ]
then
if [ "$#" -eq "2" ]
then
echo "$2"
bf_ip=`echo $2 | awk --posix '/[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/{print $0}'`
if [ -z "$bf_ip" ]
then
echo "cs2 is 2 but ip is err $2"
exit 1
fi
bf_all=0
else
echo "wrong cs2 $#"
exit 1
fi
fi
bfdir=$1
if [ -f $LockFile ]
then
touch $LockFile
fi
# Create the lock file
if ! lockfile -r 1 $LockFile #2>/dev/null
then
echo "fail to lock $LockFile"
rm -f $LockFile
exit 2;
fi
echo "lock success"
if [ ! -d $bfdir ]
then
mkdir -p $bfdir
if [ ! -d $bfdir ]
then
echo "$bfdir can not create"
rm -f $LockFile
exit 3
fi
fi
if [ -f /XXXXX/XXXX ]
then
/XXXXX/XXXX -list > finddisk.txt
fi
if [ -f XXXX_mount_name.txt ]
then
rm -rf XXXX_mount_name.txt
fi
touch XXXX_mount_name.txt
if [ -f hostdiskname.txt ]
then
rm -rf hostdiskname.txt
fi
touch hostdiskname.txt
if [ -f listdevmountname.txt ]
then
rm -rf listdevmountname.txt
fi
touch listdevmountname.txt
cat finddisk.txt | while read line
do
first=`echo $line | awk '{print $1}'`
if [ -z $first ]
then
continue
fi ##### this is used for up the empty line speed
mount_name=`echo $line | awk '{ print $NF }'`
if [ -z $mount_name ]
then
continue
fi
if [ "$bf_all" -eq "1" ]
then
tsta=`echo $mount_name | egrep '//iptv'`
else
XXX_x=`cat finddisk.txt | egrep "$bf_ip" | awk '{ print $(NF-1)}' | egrep "XXX" `
tsta=`echo $line | egrep "$XXX_x"`
fi
echo "tsta is $tsta" >> listdevmountname.txt
if [ -n "$tsta" ]
then
disk_name=`echo $line | awk '{print $1}'`
XXX_no=`echo $line | awk '{print $4}'`
dev_no=`echo $line | awk '{print $5}'`
echo "mount_name ok is $disk_name $mount_name $old_mount_name" >> listdevmountname.txt
echo "$disk_name $flr_no $dev_no" >> hostdiskname.txt
if [ "$mount_name" != "$old_mount_name" ]
then
echo "$disk_name $mount_name $XXX_no $dev_no" >> XXXX_mount_name.txt
old_mount_name=$mount_name
fi
fi
done
echo "df" > cmd.txt
echo "quit" >> cmd.txt
/XXXXX/etool < cmd.txt > etooldf.txt
cat etooldf.txt | while read line
do
mount_path=`echo $line | awk '{print $5}'`
if [ "$mount_path" == "/" ]
then
mount_size=`echo $line | awk '{print $2}' | sed 's/[A-Z]/ /g'`
echo "mountsize $mount_size G"
needasize=`cat XXXX_mount_name.txt | wc -l`
if [ "$needasize" -eq "0" ]
then
echo "please check dev,maybe down "
exit 6
fi
needsize=$(( $needasize * 5 ))
echo "needsize $needsize G"
if [ $mount_size -le $needsize ]
then
echo "need size > mount size no enough space"
rm -f $LockFile
exit 4
fi
fi
mount_path=`echo $mount_path | awk '{print substr($1,1,5)}'`
if [ "$mount_path" == "/XXXX" ]
then
echo "find XXXX not stop"
exit 5
fi
done
if [ "$?" -ne "0" ]
then
rm -f $LockFile
exit 5
fi
cat hostdiskname.txt | while read line
do
disk_name=`echo $line | awk '{ print $1 }'`
dd if=$disk_name skip=0 of=$disk_name seek=640 bs=1K count=240
if [ "$?" -ne "0" ]
then
echo "dd hm hostdist disk_name $disk_name line $line err"
rm -f $LockFile
exit 5
fi
done
cat XXXX_mount_name.txt | while read line
do
disk_name=`echo $line | awk '{print $1}'`
mount_name=`echo $line | awk '{print $2}'`
mount_cl=`echo $mount_name | sed 's/////_/g'`
echo "dd if=$disk_name of=$bfdir/$mount_cl.XXXX_bak bs=1M count=5120"
dd if=$disk_name of=$bfdir/$mount_cl.XXXX_bak bs=1M count=5120
if [ "$?" -ne "0" ]
then
echo "dd hostdist $disk_name err"
rm -f $LockFile
exit 5
fi
done
if [ "$?" -ne "0" ]
then
rm -f $LockFile
exit 5
fi
cat hostdiskname.txt | while read line
do
disk_name=`echo $line | awk '{print $1}'`
XXX_no=`echo $line | awk '{print $2}'`
dev_no=`echo $line | awk '{print $3}'`
#diskname_cl=`echo $line | sed 's/////_/g'`
echo "dd if=$disk_name of=$bfdir/$XXX_no"_"$dev_no.XXXX_bak bs=1M count=1"
dd if=$disk_name of=$bfdir/$XXX_no"_"$dev_no.XXXX_bak bs=1M count=1
if [ "$?" -ne "0" ]
then
echo "dd hostdist $line err"
rm -f $LockFile
exit 5
fi
done
rm -f $LockFile
exit $SUCCESS
******************************************************************
for arg in `/sbin/ifconfig | egrep 'inet addr' | awk '{ print $2 }' | awk -F: '{ print $2 }'`
do
echo "arg is $arg"
fscheckdir=`cat checktwoflrresult.txt | egrep "$arg" | awk '{ print $NF }' | sed -n 1p`
fschecknum=`cat checktwoflrresult.txt | egrep "$arg" | awk '{ if(NF == "8" || NF == 5) {print $(NF-4)} else if(NF == 9 || NF ==6) {print $(NF-5)} }' | sed -n 1p`
if [ -n "$fscheckdir" ]
then
echo "fscheckdir is $fscheckdir"
echo "fschecknum is $fschecknum"
break
fi
done
*************************************************************************
dir=$1
if [ "$#" -ne "1" ]
then
#dir=`pwd`
dir="/XXXX"
fi
echo "ls $dir" | ./xxxxx > get_dir.txt
fileline=`cat get_dir.txt | wc -l`
cat get_dir.txt | while read line
do
dirname=`echo $line | egrep "DIR" | awk '{ print $NF }'`
if [ ${#dirname} -ge 1 ] #${#变量名}:得到字符串长度
then
echo "$dirname" >> dirname.txt
fi
done
cat dirname.txt | while read line
do
linkname=`echo $line`
echo "ls $dir/$linkname/0" | ./XXXXX | grep "[LNK]" > linkname.txt
cat linkname.txt | while read line
do
sed "s//[LNK/]/$modify_dir$zifu$linkname$zifu$shuzi/g" linkname.txt > link.txt
sed "s/X////g" link.txt >> lin.txt
done
done
- shell脚本对于sed和awk等使用
- sed和awk中使用shell变量
- sed和awk中使用shell变量
- sed和awk中使用shell变量
- Shell脚本学习笔记(七)--sed和awk
- Shell脚本学习笔记(七)--sed和awk
- shell脚本awk, sed, cut的妙用
- 【shell脚本练习】grep sed awk
- shell脚本---grep、awk、sed工具
- Linux Shell脚本(正则/Sed/AWK)
- 脚本使用(awk,shell...)
- shell脚本-awk使用
- Shell中awk和sed的一些使用
- sed 和 awk的使用
- awk和sed使用介绍
- awk sed等神奇使用备忘
- shell编程之sed和awk
- shell中的awk 和sed及grep
- 亚马逊周二正式推出了云音乐服务Cloud Player
- glPushMatrix();glPopMatrix();以及glMatrixMode的用法
- 对于SAP中ABAP国际化问题的一点经验
- 关于C和C++中空参数表的函数的解释
- 在vc++6.0中如何生成debug版和release版程序
- shell脚本对于sed和awk等使用
- 流密码的密钥
- 3D数学 ---- 矩阵和线性变换
- 'IActiveDesktop' : undeclared identifier 的处理
- 一步步写嵌入式操作系统:ARM编程的方法与实践
- 如何利用配置的网络服务名连接到数据库:
- 浏览器的幽默
- WebLogic 参数
- [译]OOSE第7章:Analysis 分析 7.1 Introduction