извлеките результат regexp строки и запишите это в переменную

Я пытаюсь записать сценарий оболочки, который ищет в файле, указанном как аргумент 1$ для regex, и пишет найденный подшаблон в переменную, которую я могу затем использовать.

скажем, мой сценарий называют 'dosth.sh', и у меня есть файл 'plot.gp' со строкой

set output 'test.tex'

Если я теперь выполняюсь 'dosth.sh plot.gp' сценарий, должен извлечь 'test.tex' из plot.gp и записать это в переменную.

Как это возможно с grep или другими?

Спасибо и наилучшие пожелания, Jan Oliver

1
задан janoliver 30 June 2010 в 11:02
поделиться

5 ответов

value=`cat $1 | grep -e 'set output' | cut -d'"' -f 2`

использование "вместо", и строка выше выполняет свою работу.

2
ответ дан 2 September 2019 в 23:24
поделиться

Вы можете попробовать что-нибудь вроде

value=`grep '^set output' $x | cut -d' ' -f 3`

(обратите внимание, что вы сохраните кавычки в $ value

0
ответ дан 2 September 2019 в 23:24
поделиться

dosth.sh:

#!/bin/bash
VALUE=`cat $1 | grep <your regexp here>`
echo $VALUE

это можно использовать как:

$ ./dosth.sh a.txt

затем найденные строки сохраняются в переменной VALUE

Вы также можете передать regexp через некоторые аргументы (скрипт запрашивает имя файла):

dosth.sh:

#!/bin/bash
echo -e "Which file do you want to grep?"
read  FILENAME
args=("$@")
VALUE=`cat $FILENAME | grep $args`
echo $VALUE

что можно использовать как:

$ ./dosth.sh here comes my * pattern

Возможно, эта ссылка будет вам полезна: Link

0
ответ дан 2 September 2019 в 23:24
поделиться

значение = $ (awk -F "'"' $ 1 == "установить вывод" {print $ 2} 'somefile)

0
ответ дан 2 September 2019 в 23:24
поделиться
variable=$(sed -n '/^set output/ s/[^\x27]*\x27\([^\x27]*\)\x27/\1/p' "$1")
0
ответ дан 2 September 2019 в 23:24
поделиться
Другие вопросы по тегам:

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