shell--实战小经验

目录

1、判断当前文件是否存在目录或者文件

2、判断目录下文件的个数

3、对日期进行排序

4、替换文件内某个字符串

5、给文件中数据加上引号

6、shell导出mysql数据表指定行数记录


周末优化了一下博客,把之前记录经验式的文章集合到这个地方,方便自己和大家查看。

1、判断当前文件是否存在目录或者文件

获取指定目录下的所有文件名

path=/home/data
 
files=$(ls ${path})
 
for filename in $files
 
do

判断文件是不是目录,是就跳过

if [ -d ${path}/$filename ]
then
    echo "$fliename是一个目录"
    continue
fi
   echo "$filename是普通文件"
done

2、判断目录下文件的个数

判断当前目录下的文件个数:

count=`ls | wc -w`
 
echo $count 

判断指定目录下的文件个数:

count=`ls /home/data | wc -w`
 
echo $count

分析:

| 是管道描述符,将ls /home/data的输出作为wc -w指令的输入

wc 是命令,主要用来计算一个文件的行数、单词数、字符数

-w 表示统计单词数

-l 表示统计行数

-c 表示统计字节数

-m 表示统计字符数

3、对日期进行排序

比如目前有一个名为date的txt文本,里面有一堆时间日期的数据

20180720

20180616

20180415

20180916

20180916

现在我们使用sort命令对它进行排序和去重,并重定向到新文件中

cat date.txt | sort -n | sort -u > new_date.txt
 
cat new_date.txt

就可以实现对日期的排序,做到按日期先后处理内容了。

解释:

sort -n 表示 排序

sort -u 表示 去重

sort -r 表示 对当前排序取反

sort -o 可以重定向到原文件

sort  -r date.txt -o date.txt  

4、替换文件内某个字符串

数据库中有些时间的字段为月-日没有年。这将导致今年结束后,明年会出现日期难以对账的问题。为了匹配,可以在脚本中把年份加上去。

sed -i s/'0420'/'20180420'/g `grep '0420' -rl a.sql `

通过这句话,即可将0420替换为20180420

解释:

sed:

-i表示对文件操作,` `表示将grep 的结果作为操作文件

s/'0420'/'20180420'/g 表示将0420替换为20180420

/g表示一行中有多个0420的时候,都替换。没有g的话就是仅替换第一个0420。

grep:

-r 表示查找当前目录和其子目录
-l 表示仅列出符合条件的文件名,传给sed

5、给文件中数据加上引号

给属性加单引号:

ret=`(echo a b c d|sed "s/\w\+/'&'/g")`  
 
echo $ret

输出 'a' 'b' 'c' 'd'

将空格替换为逗号:

ret=`(echo a b c d|sed 's/\s\+/,/g')`  
 
echo $ret

输出 a,b,c,d

将空格替换为逗号的同时给属性加上单引号:

ret=`(echo a b c d|sed 's/\s\+/,/g')|sed "s/\w\+/'&'/g"`  
 
echo $ret

输出'a','b','c','d'

6、shell导出mysql数据表指定行数记录

总结一下shell脚本导出mysql指定行数的方法。

导出(10,‘zf’)的后n条记录:

mysqldump -u $username -p$password $dbname $tbname -w "(id,name)>(10,'zf') limit n";

以上方法的字符类型的记录记得加单引号,而且id需要为自增型。

导出前n条记录:

mysqldump -u $username -p$password $dbname $tbname -w "true limit n";

导出6行到第11行记录:

mysqldump -u $username -p$password $dbname $tbname -w "true limit 5,6";

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值