2014-05-09 42 views
-1

我有一個bash文件,與其他行一起在下面的行。如何grep文件中的特定模式

var BUILD_VERSION  = '2014.17.10_23'; 

我只是想提取2014.17.10_23並且該值可能改變,像grep命令2014*。但是,當我這樣做時,我得到的整行返回而不是值2014.17.10_23

什麼是最好的方法來實現這一目標?

感謝

+0

的grep不會做到這一點,你需要在awk或sed的 –

+1

你的正則表達式有效地查找'201';你想要的東西像'grep -oP「^ var [] * BUILD_VERSION [] * = [] *'\ K [^'] *」' – tripleee

+0

@tripleee您應該將其作爲回答。這是一個很好的解決方案,對其他人來說是一個很好的參考。你會得到我的最高票數。 ':)' –

回答

1

使用awk

awk -F= '/BUILD_VERSION/{print $2}' input | tr -d "[' ;]" 

而且隨着sed

sed -n "/BUILD_VERSION/s/.*'\([^']*\)'.*/\1/p" input 
+0

這工作得很好!謝謝 – user1432622

+0

這個命令的工作原理awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」我從下面的命令中獲取的souce文件中的值unzip -c work/$ todeployname/warfile.war app/config/Property.js> /app/deployments/svnbuild.tmp。因此,不要寫入tmp文件,我如何直接將unizp -c的輸出提供給此命令以獲取內部版本號awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」 – user1432622

0
grep 'BUILD_VERSION' <your file> | sed -e 's/var BUILD_VERSION = //g' 

會讓你'2014.17.10_23';(通過幾個或管吧)擺脫行情的調整sed的表達。

這將是Perl中的1個班輪正則表達式...

+0

此命令可用awk -F ='/ BUILD_VERSION/{print $ 2}'輸入| tr -d「[';]」我從下面的命令中獲取的souce文件中的值unzip -c work/$ todeployname/warfile.war app/config/Property.js> /app/deployments/svnbuild.tmp。因此,不要寫入tmp文件,我如何直接將unizp -c的輸出提供給此命令以獲取內部版本號awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」 - – user1432622

1

這裏是另一個awk解決方案:

awk -F' = ' '/BUILD_VERSION/ {gsub(/\x27|;/,""); print $NF}' 
+0

此命令的工作原理awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」我從下面的命令中獲取的souce文件中的值unzip -c work/$ todeployname/warfile.war app/config/Property.js> /app/deployments/svnbuild.tmp。因此,不要寫入tmp文件,我如何直接將unizp -c的輸出提供給此命令以獲取內部版本號awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」 - – user1432622

+0

@ user1432622管道輸出'your_command | awk ...' –

+0

是的,但是如何在awk命令中的管道後使用your_command引用文件名? – user1432622

0

您可以使用此awk

awk -F\' '/BUILD_VERSION/ {print $2}' file 
2014.17.10_23 
+0

該命令可以工作awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」我從下面的命令中獲取的souce文件中的值unzip -c work/$ todeployname/warfile.war app/config/Property.js> /app/deployments/svnbuild.tmp。因此,不要寫入tmp文件,我如何直接將unizp -c的輸出提供給此命令以獲取內部版本號awk -F ='/ BUILD_VERSION/{print $ 2}'input | tr -d「[';]」 - – user1432622

+0

@ user1432622我不熟悉如何從解壓縮中獲取數據。但是你可以刪除'tr'命令。 'awk -F ='/ BUILD_VERSION/{gsub(/ [; \ x27] /,「」,$ 2); print $ 2}'input''\ x27'創建單引號''' – Jotne

相關問題