与awk命令相似sed命令也用来批量处理文本,同样是文本处理神器
基本命令形似
sed [options] 'command' file(s)
比如hive的hdfs数据通常以日期分区,在hive脚本中如果直接用from_unix表示当天日期,会无法识别分区导致效率极其低下
通常可以在hive脚本中先用一个字符串代替日期,在执行时使用sed命令把字符串替换成当天日期即可,比如
test.sql文本如下,获取最近30天的log
select * from log where cal_dt>=date_sub(${date},30)
date +%Y-%m-%dtest.sql中使用${date}代替当提日期,在执行前替换成真正的日期字符串
date=`date +%Y-%m-%d`
sed -e s/\${date}/\'${date}\'/g test.sql > test_1.sql
hive -f test_1.sql