从字符串中提取正则表达式结果并将其写入变量

时间:2010-06-30 11:02:12

标签: shell grep

我正在尝试编写一个shell脚本,该脚本在指定为参数$ 1的文件中搜索正则表达式,并将找到的子模式写入我可以使用的变量。

假设我的脚本名为'dosth.sh',我的文件'plot.gp'带有

set output 'test.tex'

如果我现在执行'dosth.sh plot.gp',脚本应该从plot.gp中提取'test.tex'并将其写入变量。

grep或其他人怎么可能?

感谢和问候,Jan Oliver

5 个答案:

答案 0 :(得分:2)

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

使用“而不是”,上面的行就可以了。

答案 1 :(得分:0)

你可以尝试一下

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

(请注意,您将保留$value

中的引号

答案 2 :(得分:0)

dosth.sh:

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

这可以用作:

$ ./dosth.sh a.txt

然后找到的字符串存储在变量VALUE

你也可以通过一些参数给出正则表达式(脚本要求文件名):

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

答案 3 :(得分:0)

variable=$(sed -n '/^set output/ s/[^\x27]*\x27\([^\x27]*\)\x27/\1/p' "$1")

答案 4 :(得分:0)

value=$( awk -F"'" '$1 == "set output " {print $2}' somefile )