У меня есть awk-код, который работает очень медленно. Формат моего файла - это таблица с разделителями 5 столбцов ASCII. Я работаю на колонке 5, чтобы получить количество соответствующих символов, чтобы изменить значение в колонке 4.ускорить мою команду awk? Ответ должен быть awk :)
Примера входных данные линия:
10 5134832 Н 28 Ааааа * AAAAaAAAaAAAAaAAAA ^] а ^] а^Fa ^] a
Если я нахожу «^» в 5 долларов, я хочу не считать его или следующий символ. Затем я хочу узнать, сколько символов «>» или «<» или «*» и удалить их из счета. Я предполагаю использовать gsub, а 3 раскола менее идеальны, тем более что столбец 5 может быть очень длинной строкой.
awk '{l=$4; if($5~/>/ || $5~/</ || $5~/*/) {gsub(/\^./,"");l-=split($5,a,"<")-1;l-=split($5,a,">")-1;l-=split($5,a,"*")-1}
Если код успешно работает на указанной выше линии, л будет 27.
Я опуская окружающие части команды, чтобы попытаться сосредоточиться на части у меня есть вопрос о том.
Итак, что является лучшим шагом для ускорения этого запуска?
перепишем его в ассемблере :) –