shell

1.双重循环
#!/bin/bash
cd /data/pyspark/program/auto_report/zhengyuan/test
begin_date="2019-01-01"
end_date="2019-02-25"
while [ $begin_date != $end_date ]
do
cat dw.dwd_pcrowd_order_di.init.conf | while read line
    do
    stat_type=`echo ${line} | awk -F" " '{print $1}'`
    echo ${stat_type}
    ptype=`echo ${line} | awk -F" " '{print $2}'`
    echo ${ptype}
    stat_value=`echo ${line} | awk -F" " '{print $3}'`
    echo ${stat_value}
    bdate=`echo ${line} | awk -F" " '{print $4}'`
    echo ${bdate}
    ds=$1
    echo ${ds}
    edate=`date -d "1 days ${ds}" +"%Y-%m-%d"`
    echo ${edate}
    /data/pyspark/program/auto_report/tool/cc_hive -f dwd_online_pcrowd_num_di_his.hql -p "stat_type=${stat_type},ptype=${ptype},stat_value=${stat_value},bdate=${bdate},edate=${edate},ds=${begin_date}"
    done
begin_date=`date -d "1 day $begin_date" +%Y-%m-%d`
done
2.循环脚本
#!/bin/bash
begin_date="2018-10-01"
end_date="2019-02-01"
while [ $begin_date != $end_date ]
do
begin_date=`date -d "1 month $begin_date" +%Y-%m-%d`
echo $begin_date
done
3.循环脚本
  • 代码内容
#!/bin/bash
cd /data/pyspark/program/auto_report/zhengyuan/test
cat dw.dwd_pcrowd_order_di.init.conf | while read line
do
    stat_type=`echo ${line} | awk -F" " '{print $1}'`
    echo ${stat_type}
    ptype=`echo ${line} | awk -F" " '{print $2}'`
    echo ${ptype}
    stat_value=`echo ${line} | awk -F" " '{print $3}'`
    echo ${stat_value}
    bdate=`echo ${line} | awk -F" " '{print $4}'`
    echo ${bdate}
    ds=$1
    echo ${ds}
    edate=`date -d "1 days ${ds}" +"%Y-%m-%d"`
    echo ${edate}
    /data/pyspark/program/auto_report/tool/cc_hive -f dwd_pcrowd_order_di_his.hql -p "stat_type=${stat_type},ptype=${ptype},stat_value=${stat_value},bdate=${bdate},edate=${edate},ds=${ds}"
done
  • 文件内容
all d   "all"   2018-10-01
all w   "all"   2018-10-01
all m   "all"   2018-10-01
l1cat d   l1_id   2018-10-01
l1cat w   l1_id   2018-10-01
l1cat m   l1_id   2018-10-01
4.Linux shell中2>&1的含义解释 (全网最全,看完就懂)
3.删除 /data1/airflow/logs 文件下的文件
#!/bin/bash
find /data1/airflow/logs  -mtime +30 -name "*.log"|xargs rm -rf
find /data1/airflow/logs  -mtime +30 -name "201[0-9]*T*"|xargs rm -rf

find 
-mtime +30    #30天之前修改过的文件
-name "*.log"    #正则匹配文件名包含 .log 的文件
|xargs rm -rf    #文件名传入后,一批一批的删除
4.shell中&&和||的使用方法

1.只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
2.如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。

4.wc的使用
wc 有四个参数可选,分别是l,c,m,w
wc -l filename    #报告行数
wc -c filename    #报告字节数
wc -m filename    #报告字符数
wc -w filename    #报告单词数
ps -ef|grep airflow|grep scheduler|wc -l    #结合 grep 使用
5.awk学习
kill $(ps -ef | grep "airflow scheduler" | awk '{print $2}')   #手动杀死包含“airflow scheduler”的进程

-F指定分隔符
awk -F":" '{print $1 $3}'  /etc/passwd                       //$1与$3相连输出,不分隔
awk -F":" '{print $1,$3}'  /etc/passwd                       //多了一个逗号,$1与$3使用空格分隔
awk -F":" '{print $1 " " $3}'  /etc/passwd                  //$1与$3之间手动添加空格分隔
awk -F":" '{print "Username:" $1 "\t\t Uid:" $3 }' /etc/passwd       //自定义输出  
awk -F: '{print NF}' /etc/passwd                                //显示每行有多少字段
awk -F: '{print $NF}' /etc/passwd                              //将每行第NF个字段的值打印出来
6.awk 进阶
begin_date=`date -d "-100 day" +%Y-%m-%d`       #外部参数
hdfs dfs -ls /user/spark/applicationHistory |awk '$6<"'"$begin_date"'" {print "hdfs dfs -rm "$8}'|/bin/bash     #筛选根据空格分隔的 第六列 小于 begin_date 的值,然后把后面的打印出来,传入第八列的值,最后把打印出来的语句使用bash执行
6.外部传入参数执行hive语句
  • 双引号里面的语句是可以传入参数的
  • 传入参数之后还可以进行拼接 {hdb}.{table}_di
mdb='kaipao'
hdb='zhengyuan'
table='water_friend_rel'
check_col='create_time'
ds='2019-04-22'
hive -e "show columns from ${hdb}.${table}_di" |grep -v 'WARN:' > tmp1.txt
7.IF使用——shell判断空值
tf=`cat ${mdb}.${table}.timestamp`
if [ -n "${tf}" ]; then
    echo "时间戳长度文件存在"
    l=${#tf}
else
    echo "时间戳长度文件不存在,需创建"
    mysql -u datateam -pRJ4f84S4RjfRxRMm -h172.16.8.4 -A ${mdb}  -e "select max(${check_col}) from ${mdb}.${table} where ${check_col} >unix_timestamp(date_sub('${ds}', interval 30 day))" |awk 'NR>1' >${mdb}.${table}.timestamp
    tf=`cat ${mdb}.${table}.timestamp`
    l=${#m1}
fi
8.IF使用——多条件判断和等号
if [[ ! -n "$a" && l -eq 13 ]]; then
  echo "全量导入"
  #录入全量导入的代码
elif [[ -n "$a" && l -eq 13 ]]; then
  echo "增量导入,有表结构,历史有数据,本分区有数据"
elif [[ ! -n "$a" && l -eq 10 ]]; then
  echo "全量导入"
elif [[ -n "$a" && l -eq 10 ]]; then
  echo "增量导入,有表结构,历史有数据,本分区有数据"
else
  echo "其他异常"
fi
9.ncftpget 从服务器下载
#登录服务器(默认进入服务器的 /date/ftp 文件夹)
/usr/local/Cellar/ncftp/3.2.6/bin/ncftpget -u devops -p idongjia@123 172.16.7.103

#下载数据 (cd zy) 进入自己的文件夹
get 文件名
默认下载到  /usr/local/Cellar/ncftp/3.2.6/bin/ 也就是 ncftpget 命令默认的文件夹
10.批量修改文件名的后缀
ls |  awk -F ' - 技术-数据算法组 - 东家百科' '{print  "mv \""   $0  "\"  "  $1$2  "  " }' | /bin/bash
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容