我想捕获hadoop文件的大小,然后根据它的值进行处理。我已经写了一些unix脚本,但没有按预期工作。
# !/bin/sh
VAR=$(hadoop fs -ls /user/smike/del | sed 1d | awk '{ print $NF }' | paste -sd, | sed 's/,/ /g')
FVAR=$VAR
array1=($FVAR)
a=""
b=""
for i in "${array1[@]}"
do
echo "$i"
# var1=$(hadoop fs -dus /user/smike/del/$i|awk '{ print $(NF-1) }')
var1=$(hadoop fs -ls /user/smike/del/$i|awk '{ print $(NF-3) }')
echo "Size of the file is $var1"
if [ $var1 -gt 0]; then
a="$a $i"
else
b="$b $i"
fi
done
echo "$a"
echo "$b"
当我看到我的nohup文件时,下面一行的替换是var1=$(hadoop fs-ls/user/smike/del/$i | awk'{print$(nf-3)}')
+ echo /user/smike/del/2
/user/smike/del/2
+ awk '{ print $(NF-3) }' + hadoop fs -ls /user/smike/del//user/smike/del/2
16/08/18 20:16:28 INFO hdfs.PeerCache: SocketCache disabled.
ls: `/user/smike/del//user/smike/del/2': No such file or directory
我不知道为什么它会这样替代。感谢您的帮助。谢谢
1条答案
按热度按时间pengsaosao1#
替换看起来不错;
i
只是已经有了一个完整的路径名,而且似乎没有必要在它前面加前缀/user/smike/del
.