Экстракт строки в файле журнала, которые больше, чем значение

Для этого вам не нужен временный файл, а sed (или awk) гораздо более гибкие в обработке комментариев, чем оператор case оболочки.

Например:

configfile='/opt/myconfigfile.txt'
[ $# -gt 0 ] && [ -r "$1" ] && configfile="$1"

sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' "$configfile" |
    while read var1 var2 var3 var4; do
      # stuff with var1, etc.
    done

Эта команда удаляет комментарии (с пробелами в начале или без них) и удаляет пустые строки из ввода перед тем, как передать их в цикл while.Он обрабатывает комментарии к строкам отдельно и комментарии, добавленные в конец строки:

# full-line comment
# var1 var2 var3 var4
abc 123 xyz def # comment here

Вызов sed или awk для таких задач не «абсурд», это совершенно нормально . Вот для чего нужны эти инструменты. Что касается производительности, я готов поспорить, что во всех файлах ввода, кроме очень маленьких, версия sed будет намного быстрее. При подключении к sed возникают некоторые накладные расходы на запуск, но он выполняется очень быстро, в то время как оболочка работает медленно.

1
23.09.2018, 16:08
1 ответ

Я повторно -скомпилировал программу на ПК -2, и тогда она работает хорошо. Как указал Джон, проблема может быть вызвана разницей в архитектуре обоих компьютеров.

2
27.01.2020, 23:31

Теги

Похожие вопросы