Поиск строки в файле и сохранение строки после нее в переменную

Если элементы вывода, о которых вы упомянули, являются статическими (, если вы уверены, что они не изменятся )означает. Вы можете напрямую использовать команду ниже

Здесь file.txt является доступным выводом

 egrep -o "test1|oracle|cuser|dogfish" file.txt | sort | uniq | tac | tr  "\n" " " | awk '{$5=$3;$3=$4;$4="";print $0}'| sed -r "s/\s+/ /g"

выход

test1 oracle cuser dogfish
2
12.02.2020, 22:16
2 ответа

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

С любым sed:

$ var=$(sed -n 's/.*CD: \([^ ]*\).*/\1/p' file)
$ echo "$var"
Testing

С любым awk:

$ var=$(awk 'sub(/.*CD: /,""){sub(/.*/,""); print}' file)
$ echo "$var"
Testing
1
28.04.2021, 23:23

Используя grepи регулярное выражение в стиле perl, вы можете использовать положительный просмотр назад:

variable_a=`grep -Po '(?<=CD: )[^ ]+' file.txt`

В bash это говорит:

  • Создайте переменную с именем variable_aи присвойте ей значение того, что получается из команды в обратных апострофах
  • grepследует использовать регулярное выражение perl(-P)и возвращать только совпадающую часть строки(-o)
  • Шаблон должен соответствовать 'CD :', а затем 1 или более символам, не являющимся пробелом([^ ])
  • Найдите шаблон в файле.txt
2
28.04.2021, 23:23

Теги

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