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
'awk '{print $ 2" \ t "$ 4}' infile | sort +1 -2> outfile'? Добавьте еще что-нибудь, что вам нужно после '' sort ... ', используя больше '|' s. Индикатор выполнения просто замедлит вас. Иметь веру! ;-) Удачи. – shellter
Большое спасибо !!! Это, безусловно, делает его намного быстрее. У меня все еще есть несколько строк для очистки (не показано в примерах данных), но я думаю, что я могу использовать SED, чтобы найти и удалить их. Согласен, что индикатор выполнения замедлит меня; если программа получает ускорила достаточно, то точка является спорной. :) Но с чего это начиналось медленно? Является ли эхо просто очень медленной командой? – Robert
, поскольку вы работаете в сценариях Unix, вам нужно научиться подсчитывать количество процессов, которые вы создаете. С моим сценарием есть 1 процесс, с вашим скриптом есть мастер-процесс (цикл while) И по крайней мере 1 процесс на строку данных, которые вы читаете. Хотя вы можете использовать sed для очистки ваших данных, вы почти наверняка получите те же результаты, используя awk-код, например 'awk '/ Dont_process/next;/DontProcess2/next; {print $ 2 "\ t" $ 4} 'infile> outfile'. Конечно, вам необходимо изменить целевые показатели исключения DontProcess2 по мере необходимости. Вы также можете использовать reg-выражения для исключения. Поместите некоторые данные samp – shellter