2011-02-24 20 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