欢迎关注公众号,一起从天坑专业转行大数据开发。
文本处理三剑客:awk,grep,sed
awk:
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
参数:
grep:
Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
grep参数:
sed:
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
按照文件权限进行判断
-
两个文件之间进行比较
-
两个整数之间比较
[ 23 -ge 22 ] && echo "yes" || echo "no" yes
#判断23是否大于等于22,当然是了
[ 23 -le 22 ] && echo "yes" || echo "no" no
#判断23是否小于等于22,当然不是了
5、字符串的判断
name=sc
#给name变量赋值
[ -z "$name" ] && echo "yes" || echo "no"
no
#判断name变量是否为空,因为不为空,所以返回no
aa=11
bb=22
#给变量aa和变量bb赋值
[ "$aa" == "bb" ] && echo "yes" || echo "no"
no
#判断两个变量的值是否相等,明显不相等,所以返回no
6、多重条件判断
aa=11
[ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"
no
#判断变量aa是否有值,同时判断变量aa的是否大于23
#因为变量aa的值不大于23,所以虽然第一个判断值为真,返回的结果也是假
aa=24
[ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no" yes
单分支条件语句需要注意几个点
-
if语句使用fi结尾,和一般语言使用大括号结尾不同
-
[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
-
then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了
例子:判断分区使用率
#!/bin/bash
#备份mysql数据库。
# Author:shenchao(E-mail:shenchao@lampbrother.net)
ntpdateasia.pool.ntp.org&>/dev/null
#同步系统时间
date=$(date+%y%m%d)
#把当前系统时间按照“年月日”格式赋予变量
datesize=$(du-sh/var/lib/mysql)
#统计mysql数据库的大小,并把大小赋予size变量
if [ -d/tmp/dbbak ]
then
echo"Date:$date!" > /tmp/dbbak/dbinfo.txt
echo"Datasize$size">>/tmp/dbbak/dbinfo.txt
cd/tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
rm -rf /tmp/dbbak/dbinfo.txt
else
mkdir /tmp/dbbak
echo"Date:date!">/tmp/dbbak/dbinfo.txt
echo"Datasize:size">>/tmp/dbbak/dbinfo.txt
cd/tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql
dbinfo.txt &> /dev/null
rm -rf /tmp/dbbak/dbinfo.txt
fi
#!/bin/bash
#从1加到100
#Author:shenchao(E-mail:shenchao@lampbrother.net)
i=1
s=0
while [ $i -le 100 ]
#如果变量i的值小于等于100,则执行循环
do
s=$(($s+$i))
i=$(($i+1))
done
echo"Thesumis:$s"
#!/bin/bash
#从1加到100
#Author:shenchao(E-mail:shenchao@lampbrother.net)
i=1
s=0
until [ $i -gt 100 ]
#循环直到变量i的值大于100,就停止循环
do
s=$(($s+$i))i=$(($i+1))
done
echo"Thesumis:$s"
#!/bin/bash
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"return $(($aNum+$anotherNum))}
funWithReturn
echo "输入的两个数字之和为 $? !"