我是bash脚本的新手,我的任务是读取我的配置文件中的一行, 这就是......我想......
让我们假设" sample.conf"是文件,在文件中有一行.. 像这样,
webURL: "http://www.sampledomain:8080"
我想要的是,我需要获得webURL的价值,这意味着" http://www.sampledomain:8080"如果网址不等于" http://www.sampledomain:8080"这个我需要用正确的值来改变它。希望你能帮助我,非常感谢任何帮助。
谢谢。
答案 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