awk,sed

交换文本的两列

awk -F'\t' '{print $2,"\t",$1,"\t",$3}' awktest.tst >awktest.txt 

删除某用户下的表

 hdfs dfs -ls /apps/hive/warehouse/test.db | grep user | awk '{split($8, table, "/"); 
 print table[6]}'
 hdfs dfs -ls /apps/hive/warehouse/test.db | grep user | awk '{split($8, table, "/"); 
 print table[6]}' | xargs -i hive -e "use test; drop table dev.{};"

输出某列长度大于阈值的文件名

 awk -F'\t' '{if(length($2)>10){print FILENAME,$0}}' *201*  

在某段时间范围内,执行上传文件到hdfs命令

for x in  {2016122{5,6,7,8,9},2016123{0,1},2017010{1,2,3,4,5}};do 
ls *$x*|awk '{print $0}'|xargs -i 
hadoop fs -put {} /user/testuser/data/Test/$x/;
done

sed 替换某个以\t分割的文件中,某列包含*htm*的内容为\([0-9]\{5,\}\)\(5位以上数字)括号内的内容。
使用\1来捕获前面的括号

sed -i 's/\t\s\{0,\}/\t/g' *201*
sed -i 's/\t\([0-9]\{5,\}\)\.htm.*\t/\t\1\t/' *201*
sed -i 's/\t\s\{0,\}\([0-9]\{5,\}\)\.htm.*\t\s\{0,\}/\t\1\t/' *201*

查找某些文件中包含html的文件信息

find *201* -print |xargs grep "html" 

在某段时间范围内,执行批量上传文件到hdfs命令

for x in {2016122{5,6,7,8,9},2016123{0,1},2017010{1,2,3,4,5}};do
 echo hadoop fs -put $x /user/test/data/test/$x/; 
 hadoop fs -rm -r /user/test/data/test/$x/;
 hadoop fs -mkdir /user/test/data/test/$x/;
 hadoop fs -put *$x* /user/test/data/test/$x/; 
 done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值