Я пытаюсь написать bash-скрипт, который будет принимать файл и искать все значения, соответствующие регулярному выражению, а затем добавлять их в массив.
В качестве первого шага я написал скриптэто добавляет все строки в файле журнала в массив и отображает их.Затем я попытался отредактировать этот скрипт для поиска регулярного выражения в файле журнала, в котором я получил огромное количество ошибок.
То, что я пытаюсь сделать, это взять значение в скобках файла журнала.Некоторые строки в файле журнала содержат синтаксис, например [23423234 с], который является отметкой времени.Я хочу получить значения (цифры, пробел и "s") в скобках (но не в скобках!) И добавить эти значения в массив.
Мой начальный скрипт приведен ниже:
#!/bin/bash
echo "STARTING SCRIPT"
getArray(){
array=()
while IFS= read -r line
do
array+=("$line")
done <"$1"
}
getArray "testlog.txt"
for e in "${array[@]}"
do
echo "$e"
done
echo "DONE SCRIPT"
Журнал, на который я смотрю, выглядит следующим образом:
[1542053213 s] Starting Program:
-----------------------------------------
[1542053213 s] PROGRAM ERROR
ERRHAND: 1033
ERRHAND: 233545
ERRHAND: 1
[1542053213 s] Program completed!
[1542053213 s] Config File complete. Stopping!
Я хочу сделать что-то со следующим псевдокодом:
For each line in file{
regex = [\d\ws]
if line matches regex{
add to array
}
}
for each item in array{
echo item
}
В настоящее времяЯ отредактировал свой сценарий так, как показано ниже:
#!/bin/bash
echo "STARTING SCRIPT"
getArray(){
array=()
while IFS= read -r line
do
if [[$line =~ [\d\ws]; then
array+=("$line");
fi
done <"$1"
}
getArray "log.txt"
for e in "${array[@]}"
do
echo "$e"
done
echo "DONE SCRIPT"
Но всякий раз, когда я запускаю его, я получаю следующий набор ошибок:
[jm@local Home]$ ./Parser.sh
STARTING SCRIPT
./Parser.sh: line 9: [[[1542053213: command not found
./Parser.sh: line 9: [[-----------------------------------------: command not found
./Parser.sh: line 9: [[[1542053213: command not found
./Parser.sh: line 9: [[ERRHAND:: command not found
./Parser.sh: line 9: [[ERRHAND:: command not found
./Parser.sh: line 9: [[ERRHAND:: command not found
./Parser.sh: line 9: [[[1542053213: command not found
./Parser.sh: line 9: [[: command not found
./Parser.sh: line 9: [[[1542053213: command not found
DONE SCRIPT
Любой совет будет принят с благодарностью.Я пытался просмотреть другие сообщения, но ни один из них не смог реально решить мою проблему, которая заключается в создании правильного регулярного выражения для шаблона [2342323 s], а затем добавлении его в массив.Тиа