1

Я написал следующий сценарий в качестве практики:

#!/bin/bash

MyFile=$1

while read p; do

error=$(echo $p | awk '{print $11}')

        if [ "$error" = "500" ]
        then
                echo $p
        fi

done < $MyFile

Проблема в том, что скрипт выполняется медленно и занимает несколько часов, мои настройки:

  • Ubuntu на Windows 10 (64 с Intel i7 6400 2,80 ГГц и 8G Ram).

Есть ли проблема с моей настройкой или с логикой сценария? Спасибо,

1 ответ1

2

Использование $( запускает подоболочку, как и труба | . Лучше делать всю работу в одной оболочке или на одном языке.

Например, сделать всю работу в awk:

awk '($11==500){print}' "$1"

Или без выстрелов:

while read -a columns ; do
    [[ ${columns[10]} == 500 ]] && echo "${columns[@]}"
done < "$1"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .