2012-03-05 6 views
0

У меня есть код ниже, работающий в KSH, но он занимает задание, чтобы запустить генератор .tmp1. В команде echo $LINE | cut -f 2,4 -d " " >> [file] это медленно, но я не знаю почему.Ускорение эха в ksh

Я предполагаю, что это из-за echo, но я не знаю; и я не знаю, как перезаписать его, чтобы ускорить его.

echo "Generating on zTempDay$count.tmp" 
while read LINE 
do 
#Use Cut to trim down to right colums 
#cut -b 11-26 $LINE 
#mac= cut -b 39-52 $LINE 
#vlan= cut -b 62 $LINE 
#This line pegs out the CPU - want to know why 
echo $LINE | cut -f 2,4 -d " " >> zTempDay$count.tmp1 
update_spinner 
done < zTempDay$count.tmp 
#Remove 'Incomplete' Enteries 
#numOfIncomplete=grep "Incomplete" zTempDay$count.tmp1 | wc -l 
sed -e "/Incomplete/d" zTempDay$count.tmp1 > zTempDay$count.tmp2 
#Use sort to sort by MAC 
#Use uniq to remove duplicates 
sort +1 -2 zTempDay$count.tmp2 | uniq -f 1 > zTempDay$count.tmp3 

#Format Nicely 
tr ' ' '\t' < zTempDay$count.tmp3 > zTempDay$count.tmp4 
##Want to put a poper progress bar in if program remains slow 
#dialog --gauge "Formatting Data: Please wait" 10 70 0 
#bc 100*$count/$maxDaysInMonth 

Пример данных

Internet 10.174.199.193   - 8843.e1a3.1b40 ARPA Vlan#### 
Internet 10.1.103.206   110 f4ce.46bd.e2e8 ARPA Vlan#### 

Назначение продукта (с помощью вкладки между IP и MAC)

10.174.199.193  8843.e1a3.1b40 
10.1.103.206  f4ce.46bd.e2e8 
+0

'awk '{print $ 2" \ t "$ 4}' infile | sort +1 -2> outfile'? Добавьте еще что-нибудь, что вам нужно после '' sort ... ', используя больше '|' s. Индикатор выполнения просто замедлит вас. Иметь веру! ;-) Удачи. – shellter

+0

Большое спасибо !!! Это, безусловно, делает его намного быстрее. У меня все еще есть несколько строк для очистки (не показано в примерах данных), но я думаю, что я могу использовать SED, чтобы найти и удалить их. Согласен, что индикатор выполнения замедлит меня; если программа получает ускорила достаточно, то точка является спорной. :) Но с чего это начиналось медленно? Является ли эхо просто очень медленной командой? – Robert

+0

, поскольку вы работаете в сценариях Unix, вам нужно научиться подсчитывать количество процессов, которые вы создаете. С моим сценарием есть 1 процесс, с вашим скриптом есть мастер-процесс (цикл while) И по крайней мере 1 процесс на строку данных, которые вы читаете. Хотя вы можете использовать sed для очистки ваших данных, вы почти наверняка получите те же результаты, используя awk-код, например 'awk '/ Dont_process/next;/DontProcess2/next; {print $ 2 "\ t" $ 4} 'infile> outfile'. Конечно, вам необходимо изменить целевые показатели исключения DontProcess2 по мере необходимости. Вы также можете использовать reg-выражения для исключения. Поместите некоторые данные samp – shellter

ответ

0
*awk '/Incomplete/ {next} ; 
{print $2 "\t" $4}' zTempDay01.tmp | sort +1 -2 | uniq -f 1 > outfile* 

работает как шарм, благодаря помощи Shellter в. Спасибо! :)

Смежные вопросы