linux和shell脚本常用命令技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mochou111/article/details/85003554
  • date :调配时间,可以用date命令完成很多需求,比如日志文件夹,比如求前几天等等,其他常用方法百度
date "+%Y%m%d"    #输出年月日
date -d last-day +%Y%m%d  #输出当然日期的前一天
###############################根据时间变量求取该变量的上一天
cur_sec=`date -d $curdate +%s`
after_day=$(($cur_sec - 24*60*60))
yesterdate=`date -d "1970-01-01 UTC $after_day seconds" +"%Y%m%d"`
  • awk :切分文件或者输出,可以把字符切换成所需
awk '{printf $0}'              # 多行转一行输出
awk 'NR==1'                    # 取第一行数据
awk -F '|' '{print $1"_"$2}'   # 以|切分,输出第一块第二块并以_分隔
  • sed : 把文本里字符替换为所需
sed -i 's/x1/x2/g' file_name # 这是sed常用框架,x1替换为x2
                             # ''里是什么就是什么,如需变量或其他可用""加转义符
                             # 加i是忽略输出直接更改,不加i是打印到屏幕上对文件无影响,后者常用
sed 's/[[:space:]]//g'       # 去除空格
  • grep :搜索显示匹配内容,常用管道符| 与其他命令在一起使用
grep -E 'x1|x2|x3|'    #多重匹配  
grep -vw     #w作用是全部字符匹配才会去除,以防出错,比如grew -vw pt可不匹配pt,但ptt可以照样输出
  • 循环遍历 :常用for循环来代替,常用的有以下
# 与cat ls等命令连用
for table in `ls $file_dir`;
for table in `cat $file`;

# 自定义列表循环遍历
list="x1 x2 x3 x4"
for i in ${list}

# 从1到n循环
for i in $(seq 1 10);
for((i=1;i<=10;i++));   
  • 数组相关 :把文本内容放进数组里可以方便很多需求
declare -a arr # 定义一个数组
i=0
for str in `ls `;do
    arr=($str) #获取数据内容
    array_name[i]=${arr}  #与上面得到的结果一样
done
unset arr      # 卸除数组很重要
  • 其他
$#   #是传给脚本的参数个数
$0   #是脚本本身的名字
$1   #是传递给该shell脚本的第一个参数
$2   #是传递给该shell脚本的第二个参数
$@   #是传给脚本的所有参数的列表,与$*的区别只有在""中传参数
$*   #是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$   #是脚本运行的当前进程ID号
$?   #是显示最后命令的退出状态,0表示没有错误,其他表示有错误

%?   #指去掉该变量最后一个字符,常用到建表脚本去除最后一个列的逗号,用法${sql%?}

# crontab 放后台表达式
0 0 * * * /u01/ZJSY/version/GGZY/shell/run_commit_bf.sh FW 2>&1 >/dev/null &  #每天零点后台跑
nohup command &    #也可以放在后台跑,用jobs查看

猜你喜欢

转载自blog.csdn.net/mochou111/article/details/85003554