我正在尝试编写一个shell脚本,该脚本在指定为参数$ 1的文件中搜索正则表达式,并将找到的子模式写入我可以使用的变量。
假设我的脚本名为'dosth.sh',我的文件'plot.gp'带有
set output 'test.tex'
如果我现在执行'dosth.sh plot.gp',脚本应该从plot.gp中提取'test.tex'并将其写入变量。
grep或其他人怎么可能?
感谢和问候,Jan Oliver
答案 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 )