LINUX.ORG.RU

простой вопрос по sh


0

0

Доброго времени суток!
хочу заменить:

#cat finish_all_dim_ANY_LioSTAT | awk '{print $1}' > dim_ANY_LioSTAT/1
#cat finish_all_dim_ANY_LioSTAT | awk '{print $2}' > dim_ANY_LioSTAT/2
#cat finish_all_dim_ANY_LioSTAT | awk '{print $3}' > dim_ANY_LioSTAT/3

на

LIMIT=3
for ((a=1; a <= LIMIT ; a++))
do
cat finish_all_dim_ANY_LioSTAT | awk '{print ${${a}}}' > dim_ANY_LioSTAT/$a
done

проблема в том, что не могу понять, как передать в awk правильно $1,$2,$3

такой вариант как у меня ${${a}}} - не верный.
Подскажите как правильно

Заранее огромное спасибо!

Попробуй так

LIMIT=3
for ((a=1; a <= LIMIT ; a++)); do                              
    str="'{print\$$a}'"  
    echo "cat finish_all_dim_ANY_LioSTAT | awk $str > dim_ANY_LioSTAT/$a"                          
done
Но мне что-то подсказывает что awk вполне осилит это сам.

KblCb ★★★★★
()
a=2 
awk -v a=$a '{print $a}' > dim_ANY_LioSTAT/$a
 
LIMIT=3 
awk -v l=$LIMIT '{for(i=1;i++;i<=l) {print $i > "dim_ANY_LioSTAT/"i}}' 
sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.