2016-02-17 37 views
0

,我有以下格式的文本文件中的文本文件中的字符串,後面的字符:發現使用SHELL

Value1=some string-1 
Value2=some string-2 
Value3=some string-3 
Value4=some string-4 
Value5=some string-5 
Value6=some string-6 

如果我需要找到價值Value6並打印出some string-6我該怎麼做在SHELL腳本中?

if grep -qs "Value6" Test.txt 
then 
    print some string-6 
fi 

我怎麼會打印some string-6這裏?

回答

0

簡單的方法是用grepsed。例如:

grep Value6 file | sed -e 's/^.*[=]//' 

例輸入

$ cat tmpf 
Value1=some string-1 
Value2=some string-2 
Value3=some string-3 
Value4=some string-4 
Value5=some string-5 
Value6=some string-6 

使用/輸出

$ grep Value6 tmpf | sed -e 's/^Value6[=]//' 
some string-6 

注意,你也可以做到這一點在一組電話:

$ sed -n 's/^Value6[=]//p' < tmpf 
some string-6 

無論使用哪一種方法,對所得到的字符串保存到變量中,可以使用命令替換

myvar=$(sed -n 's/^Value6[=]//p' < tmpf) 

或較舊的(現在較少使用的)反引號變體

myvar=`sed -n 's/^Value6[=]//p' < tmpf` 
+0

'sed的'是'grep'的超集;所以這是[無用的'grep'](http://www.iki.fi/era/unix/award.html#grep)。 – tripleee

+0

此外,沒有適當的錨定,這將從'=你好,這是Value6'和從'Value1 =完全不像Value6'那裏得到錯誤的東西# – tripleee

+0

是的,你是對的,但是當你談論解決方案時,模式空間*對於剛剛學習解析的人來說,它有時會讓他們的眼睛在腦海中回滾。我添加了純粹的'sed'解決方案。 –