2011-02-24 19 views
0

我不熟悉Linux,所以我很难将下面的命令转换成相对较短的Linux版本。shell,在属性文件中查找属性。有Windows命令版本

FOR /F "eol=; tokens=2,2 delims==" %i IN ('findstr /i "version" test.properties') DO 

在谷歌上搜索我似乎在过长的解决方案总是跌倒。

+1

...是的。废弃代码,描述过程。 – 2011-02-24 09:53:14

+0

那应该做什么?输入文件和输出预计也会有所帮助:) – 2011-02-24 10:01:11

+0

对不起,知道我忘记了一些东西。我试图从文件test.properties中检索名为version的属性。该属性文件是:'version = 1.0' – Jack 2011-02-24 10:07:26

回答

0

我相信这是等同于:

for i in $(grep -i "version" test.properties | cut -d= -f2) 
do 
    echo $i 
done 
+0

你应该在';'之后去掉任何东西,并且for循环会用空白符打断值,我不知道windows版本是否有效。 – 2011-02-24 10:08:26

+0

当将它放入shell文件并运行它时,似乎会净出一个意外的令牌。 !'#/斌/因为我在$庆典 (grep的-i “版本” test.properties |切-d = -f2) 做 回声$我 做 ' – Jack 2011-02-24 10:14:17

+0

@Jack你需要分号,如果你想把它写在一行上:'for i in $(grep -i“version”test.properties | cut -d = -f2);做echo $ i;做完了' – dogbane 2011-02-24 10:17:23

0
sed -ne 's/^ *version *= *\([^;]*\).*/\1/p' < test.properties | while read i; do ... done 

使用sed搜索需要的行并解析出在同一时间的价值,而阅读以防止线分离。

+0

这会导致文件意外结束? – Jack 2011-02-24 10:12:15

0

下一次,显示test.properties文件的示例,以便其他人不必猜测它的外观如何。此外,还显示您所需的输出。

awk 'BEGIN{IGNORECASE=1;FS="="}/version/{print $2;exit}' test.properties