Некоторые идеи:
1.- Вместо многократного вызова cut в каждой строке, воспользуйтесь преимуществами read.
Список переменных cut на ' '
таков:
projectName 1
filepath 2
numbers 3
lang 9
cloneID 10
cloneSubID 11
minToken 12
stride 13
similarity 14
Это можно было бы сделать непосредственно с помощью read вот так:
while read -r projectName filepath numbers a a a a a lang cloneID cloneSubID minToken stride similarity;
более длинная строка, но меньшее время обработки. Переменная a просто заполняет пространство неиспользуемых значений.
2.- Повторная обработка номеров переменных для деления на ':' может быть выполнена следующим образом (ваш вопрос относится к bash):
IFS=':' read -r a linestart length <<<"$numbers"
Что сводит код к:
while read -r projectName filepath numbers a a a a a lang cloneID cloneSubID minToken stride similarity;
do
IFS=':' read -r a linestart length <<<"$numbers"
currentLine=$linestart
endLine=$((linestart + length))
while [ $currentLine -lt $endLine ]; do
echo "$projectName, $filepath, $lang, $linestart, $currentLine, $cloneID, $cloneSubID, $minToken, $stride, $similarity"
currentLine=$((currentLine + 1))
done
done < $filename >>$outputfile
3.- Что касается второго скрипта, то в нем нет описания того, что такое переменные sub1 и/или sub2.
4.- В общем, если бы вы могли разбить один скрипт на серию более мелких скриптов, то вы могли бы засечь время каждого из них, чтобы найти, где находится область, требующая много времени.
5.- И, как рекомендуют некоторые другие ответы, размещение файла (и всех промежуточных результатов) в разделе памяти ускорит работу при первом чтении файла. Последующие выполнения скрипта будут считываться из кэша в памяти, скрывая любое улучшение. Это руководство должно помочь.
во-первых, 127.0.0.1
должно разрешиться в localhost
, поэтому вы должны соответствующим образом скорректировать /etc/hosts
. Во-вторых, в системах Debian обычно используется команда hostname
, чтобы показать или установить имя хоста, например. hostname -b mcserver
.
Для правильной настройки в /etc/hosts
также было бы интересно, если бы ваше устройство всегда получало один и тот же IP-адрес в вашей сети Wi-Fi. Предполагая, что это так, и этот IP-адрес 192.168.0.5
, я бы рекомендовал следующее для вашего/etc/hosts
:
127.0.0.1 localhost
192.168.0.5 mchost mcserver
Если вы не уверены в IP, просто введите:
127.0.0.1 localhost
127.0.0.1 mchost mcserver
Но в этом случае «mcserver» может разрешаться только локально, так как этот адрес не может быть маршрутизирован.