Разобрать определенную строку моего подходящего шаблона из входного текстового файла в bash - PullRequest
0 голосов
/ 30 сентября 2018

Я передаю текстовый файл в качестве входных данных командной строки в сценарий, и мне нужно проанализировать файл в поисках определенного шаблона:

00 TOOL     | Running /variable/directory/path/to/the/tool/executable in batch (pid xxxxx)

Теперь мне нужно извлечь /variable/directory/path/to/the/tool/executable в переменнуюскажем $executable.

Здесь часть, которая остается постоянной, равна 00 TOOL | Running в начале строки и in batch (pid xxxxx) в конце строки, где xxxxx снова является переменной.

При условии, что во входном текстовом файле эта строка появится только один раз.

Я обнаружил фрагмент 1016 * для чтения построчно, но не могу найти способ прочитать вышеупомянутую переменную:

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
done < "$1"

Любая помощьбыть очень ценным!

1 Ответ

0 голосов
/ 30 сентября 2018

Если значение вашего пути не является заданным полем, и вы хотите сопоставить его как форму регулярного выражения, попробуйте выполнить один раз.

val=$(awk 'match($0,/\/[^ ]*/){print substr($0,RSTART,RLENGTH);exit}' Input_file)

Вы можете установить его значение для переменной, выполнив var=$(awk code above)

...