交换文本的两列
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