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是一个一个手动选择是否替换