如何在Ubuntu上使用bash脚本读取文本文档中的值?

时间:2014-04-11 06:53:36

标签: bash ubuntu

我是bash脚本的新手,我的任务是读取我的配置文件中的一行, 这就是......我想......

让我们假设" sample.conf"是文件,在文件中有一行.. 像这样,

webURL: "http://www.sampledomain:8080" 

我想要的是,我需要获得webURL的价值,这意味着" http://www.sampledomain:8080"如果网址不等于" http://www.sampledomain:8080"这个我需要用正确的值来改变它。希望你能帮助我,非常感谢任何帮助。

谢谢。

3 个答案:

答案 0 :(得分:1)

像这样使用awk

URL=$(awk -F\" '/^webURL/{print $2}' sample.conf)

echo $URL
http://www.sampledomain:8080

$()表示“将附带命令的运行结果放入变量URL”。然后awk将字段的分隔符设置为双引号。然后它会在你的文件中查找以“webURL”开头的行,当它找到它时,它会输出第二对双引号之间的所有内容,即行上的字段2.

已编辑以回答进一步的问题

如果要从名为subscribe_key的java文件中解析出thing.java值,则如下所示:

subscribe_key = 'sub-f-xx-xx-xx-xx-xx'; 

你可以用这个:

key=$(awk -F\' '/^subscribe_key/{print $2}' thing.java)

echo $key
sub-f-xx-xx-xx-xx-xx

请注意,我将-F后的双引号更改为单引号,以告诉awk字段现在由单引号分隔。

请注意,如果您的值由单引号和双引号标记在同一文件中,您可以告诉awk使用 单引号双引号作为字段分隔符,如下所示:

value=$(awk -F"\'|\"" '/^subscribe_key/{print $2}' yourFile)
echo $value
sub-f-xx-xx-xx-xx-xx

value=$(awk -F"\'|\"" '/^webURL/{print $2}' yourFile)
echo $value
http://www.sampledomain:8080

答案 1 :(得分:0)

url=`grep webURL sample.conf | sed -e 's/webURL: //'`

答案 2 :(得分:0)

使用sed

sed 's#\(webURL: \).*#\1 "http://www.sampledomain:8080"#' file