干货 | Linux Shell命令及脚本大全(二)

1. 直接将文件清空:

 : > filename
 > filename
 echo "" > filename

上面3种方式,能将文件清空,而且文件大小为0
而下面两种方式,导致文本都有一个"\0",而使得文件大小为1

 echo > filename
 cat /dev/null > filename

2. 截取csv文件的某几列到指定文件中

cat loreal4.csv | awk -F"," '{print $5,$6}' >> content_loreal4

3. 将文件中所有字符替换为换行符

sed -i 's/\"{\"text_content\"/\n/g' test.txt

4. 去除双引号,单引号

sed -i 's/"//g' test.txt
sed -i $'s/\'//g' test.txt

5. 去除字符前所有0

sed -r 's/0*([0-9])/\1/' test.txt > result

6. 在多个目录下同文件名下添加

在test_*的instanceproperties下第7行添加 testadd 

sed -i '7a testadd' test_*/instance.properties

7. 在多个目录下同文件名下修改

在test_*的instanceproperties下第7行修改为 testadd 

sed -i '7c testadd' test_*/instance.properties

8. 在多个目录下同文件名下删除指定行

在test_*的instanceproperties下删除第7行 

sed -i '7d' test_*/instance.properties

9. 查看hdfs是否存在某个文件

hadoop fs -test -e /user/hive/warehouse/dwd.db/dwd_clt_main_push_server_log/type=push/dt=$data_h_tmps/000000_0
if [ $? -eq 0 ] ;then
echo "Exists"
sudo -u hdfs hadoop distcp /user/hive/warehouse/dwd.db/dwd_clt_main_push_server_log/type=push/dt=$data_h_tmps hdfs://192.168.1.11:8020/user/hive/warehouse/dwd.db/dwd_clt_main_push_server_log/type=push/

if [ $? -eq 0 ]; then
  echo "=== 拷贝成功 ===="
else
  sudo -u hdfs hadoop distcp /user/hive/warehouse/dwd.db/dwd_clt_main_push_server_log/type=push/dt=$data_h_tmps hdfs://192.168.1.12:8020/user/hive/warehouse/dwd.db/dwd_clt_main_push_server_log/type=push/
fi
else
  echo 'File is not exist'
fi

10. 查看hdfs是否存在某个目录

hadoop fs -test -d /user/hive/warehourse/xxx/xxx

11. 以小时循环

#!/bin/bash#以小时循环
#sh x.sh 2017010101 2017010301

#stime=`date -d "-72 hours" +%Y%m%d%H`
#etime=`date -d "-48 hours" +%Y%m%d%H`
stime=$1
etime=$2
while :
do
nowHour="${stime:8:2}"
nowDate="${stime:0:8}"
startDate=`date -d "+0 day $nowDate" +%Y/%m/%d`
echo stime:$stime
echo nowHour:$nowHour
echo nowDate:$nowDate
echo startDate:$startDate
startdates=$startDate"/"$nowHour
echo startdates:$startdates

hadoop distcp /DB/origin_logs/hw_vip_pv/hour/$startdates  hdfs://192.168.1.132:8020/user/hive/warehouse/dws.db/dws_clt_hw_client_vip_pv_hour/dt=$stime

stime=$(date -d "${stime:0:8} ${stime:8:2} 1hour"  +%Y%m%d%H)
if [[ $stime -gt $etime ]]
then
break
fi
done

12. 批量修改内容

批量修改 所有instance.properties文件中canal.instance.mysql.slaveId=111300,改为canal.instance.mysql.slaveId=111200

perl -p -i -e "s/canal.instance.mysql.slaveId=111300/canal.instance.mysql.slaveId=111200/g" ./*/instance.properties

13. vim中批量修改

批量修改$MDD为202007

:%s/$MDD/202007/g
:%s/$MDD/202007/c
  • 注意:
/g是全局替换
/c是一个一个手动选择是否替换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值