shell脚本方便操作记录(持续添加)

http://blog.csdn.net/richerg85/article/details/44001501

工作中经常用到的方便操作的shell命令,记录如下:

全局替换:

:%s/tmp\/\"/tmp\/\$dev_id\"\_/g

:%s/\$log_time_format /

\`date\+%Y%m%d%H%M\`

/g

打包

tar -czvf /data/third_part_new_bak/third_part_201406161044.tar.gz --exclude=*.apk 360Safe/ common

tar -czvf /data/third_part_new_bak/third_part_201406171627.tar.gz --exclude=*.apk --exclude=third_part_new/sdk/* --exclude=third_part_new/test third_part_new/

49.157服务器:

tar -czvf /data/scanSystem201406301025.tar.gz --exclude=*.apk --exclude=*.img --exclude=*.gz --exclude=tools/* scanSystem/

tar -czvf /data/emulator_scan201407031747.tar.gz --exclude=*.apk --exclude=.android/* --exclude=*.gz --exclude=temp/* --exclude=sdcard/* emulator_scan/

tar -czvf emulator_scan201407081806_48189.tar.gz --exclude=*.apk --exclude=*.img --exclude=*.gz --exclude=log/* --exclude=temp/* --exclude=SafeManager/log/* --exclude=Tencent/log/* --exclude=Trustgo/log/* --exclude=360Safe/log/   .

find . -mtime 0   # find files modified between now and 1 day ago                   # (i.e., within the past 24 hours) find . -mtime -1  # find files modified less than 1 day ago                   # (i.e., within the past 24 hours, as before) find . -mtime 1   # find files modified between 24 and 48 hours ago find . -mtime +1  # find files modified more than 48 hours ago find . -mmin +5 -mmin -10 # find files modifed between                           # 6 and 9 minutes ago

time:

date -d -2day +%Y%m%d 

date -d 1day +%Y%m%d

查看守护进程:

ps xj

判断字符串为空的方法有三种: 

if [ "$str" =  "" ]   if [ x"$str" = x ]  if [ -z "$str" ] 

统计文章中某字出现的次数:

① awk  '{s+=gsub(/level/,"&")}END{print s}' fileName

gsub(r,s)

在整个$0中用s替代r

gsub(r,s,t)

在整个t中用s替代r

② cat file | grep -o "level" |wc -l

-o, --only-matching

              Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

    打印匹配行的匹配部分,每一个匹配作为一行

liujl@ubuntu:~$ cat /etc/passwd | grep www www-data:x:33:33:www-data:/var/www:/bin/sh liujl@ubuntu:~$ cat  /etc/passwd | grep -o "www" www www www liujl@ubuntu:~$ cat  /etc/passwd | grep -o "www" |wc -l

查看文件中文件中的指定内容:

find ./ -name "unknownlist_*" | xargs grep "62aa180a3d5957cec348f25b953e8d60"

去除文件中重复的行:

sort -u test

计算百分比,expr不支持浮点除法

所以用awk格式输出:

virus_rate=`awk 'BEGIN{printf "%.2f%\n",('$not_contain_apksnum'/'$total_virus_apksnum')*100}'` 2>/dev/null

tar 打包相关:

tar --exclude=./sys.log -jcv -f bak.tar.bz2 ./*.log  将当前目录下除sys.log以外所有log文件打成一个用bzip2压缩生成的包名为bak.tar.bz2的包; tar -N "2010/10/08" -jcv -f bak.tar.gz ./*.log 将当前目录下所有修改日期比"2010/10/08"新的log文件打成一个用gzip压缩生成的包名为bak.tar.gz的包; tar --newer-mtime="2010/10/08" -jcv -f bak.tar.bz2 ./*.log 将当前目录下所有修改日期比"2010/10/08"新的log文件打成一个用bzip2压缩生成的包名为bak.tar.bz2的包;

${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ${varible%%string*}从右向左截取最后一个string后的字符串

${varible%string*}从右向左截取第一个string后的字符串

awk 用法:awk ' pattern {action} '  

FS 输入域分隔符,默认为一个空格  RS 输入记录分隔符  NF 当前记录里域个数  NR 到目前为止记录数  OFS 输出域分隔符 

ORS 输出记录分隔符 

shell,变量的变量获取:

engine_name=360

engine_num_360=2

engine_num=`eval echo '$'engine_num_$engine_name`

数组for循环的两种方法:

for port in ${port_list[@]}

直接访问port

for ((index=0;index<${#port_list[@]};index++))

访问 ${port_list[$index]}

例如 a=1,2,3,4 转化为数组:

OLD_IFS="$IFS"     IFS=","     port_list=($port_list)     device_names=($device_names)     IFS="$OLD_IFS"

2015-03-01

记录log文件,在配置中无意在每个需要生成的文件后面多添加了一个空格,

例如 exception_2015-03-01.log------>"exception_2015-03-01.log "(多出一个空格)

这个空格如何批量去掉?

[plain] view plaincopy

  1. ls *.log\  | awk '{printf "mv \t \"%s\"\t",$0;gsub(/[[:blank:]]/,"");print "\t"$0}' > a.list  

通过awk的gsub来实现替换

执行上个命令,a.list为:

mv "xxxx_log_2015-02-28.log "xxxx_log_2015-02-28.log

然后用shell执行这个a.list,就可以去掉后面的空格!

删除修改时间在30天之前的所有文件

find . -type f -mtime +30 -exec rm -v {} \;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端杂货铺

DOM 节点的克隆与删除

无奈的开头         关于DOM节点操作,如果仅仅是根据标准API来操作,那是最简单不过的了。但是现实中却哪有这么容易的问题让我们解决,其实不仅仅是节点的...

4207
来自专栏Golang语言社区

轻量级交互数据json格式初探

什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交...

3396
来自专栏好好学java的技术栈

并发基础篇(二):Thread类的API总结

1174
来自专栏Vamei实验室

Python标准库10 多进程初步 (multiprocessing包)

我们已经见过了使用subprocess包来创建子进程,但这个包有两个很大的局限性:1) 我们总是让subprocess运行外部的程序,而不是运行一个Python...

2047
来自专栏张善友的专栏

通用的序列号生成器库

正如文章《通用的业务编号规则设计实现(附源码)》 文章里需要一个多实例和线程安全的序列化生成器,在SQL Server 2012+ 版本 有一个通过.NET程序...

1905
来自专栏生信宝典

Bash概论 - Linux系列教程补充篇

本篇是我最开始学习Linux命令时看的一篇帖子,最早见于ChinaUnix (这次查找其出处时发现2002年就有这篇)。学习过程中,遇到问题就查一下。这次看到,...

1967
来自专栏有趣的django

7.python常用模块

time模块 常用表示时间方式: 时间戳,格式化的时间字符串,元组(struct_time) UTC(Coordinated Universal Time,世界...

47111
来自专栏服务端技术杂谈

Golang笔记

静态编译 编译时一个将源代码翻译成低级语言的过程。编译过程比较慢,在设计Go时,编译速度是主要的设计目标之一。静态类型意味着变量必须指定一个类型,如整形,字符串...

2984
来自专栏积累沉淀

linux学习之sed命令总结

sed工具的使用 grep工具的功能其实还不够强大,grep实现的只是查找功能,而它却不能实现把查找的内容替换掉。以前用vim的时候,可以查找也可以替换,但是只...

2018
来自专栏数说戏聊

05.记录合并&字段合并&字段匹配1.记录合并2.字段合并3.字段匹配3.1 默认只保留连接上的部分3.2 使用左连接3.3 使用右连接3.4 保留左右表所有数据行

将两个结构相同的数据框合并成一个数据框。 函数concat([dataFrame1, dataFrame2, ...])

822

扫码关注云+社区

领取腾讯云代金券