2010-09-05 19 views
1

我有一個程序,返回是這樣的:如何使用egrep的返回線中的一部分

status: playing 
artURL: http://beta.grooveshark.com/static/amazonart/m3510922.jpg 
estimateDuration: 29400 
calculatedDuration: 293000 
albumName: This Is It 
position: 7291.065759637188 
artistName: Michael Jackson 
trackNum: 13 
vote: 0 
albumID: 3510922 
songName: Billie Jean 
artistID: 39 
songID: 24684170 

我期待提取藝術家的名字,並從所有這些歌曲的名字和我猜想的egrep將是一個很好的方式來做到這一點。問題是我不知道如何只返回部分匹配行而不是整行。

egrep "artistName"顯然返回

artistName: Michael Jackson 

我只需要它返回

Michael Jackson 

任何幫助,將不勝感激。謝謝。

回答

3

你需要管道輸出到其他程序,如切:

egrep ^artistName | cut -d ' ' -f 2- 

或者你可以做整個事情在AWK或sed的:

awk -F ': ' '/^artistName/ {print $2}' 
sed -n '/^artistName/ {s/.*: //;p;}' 
3

隨着GNU grep支持Perl正則表達式:

grep -Po '(?<=^artistName:).*' filename 
1

您的數據是結構化的並且具有明顯的字段隔離ter(:),所以你可以使用awk

awk '$1~/^(artistName|songName)/{print $2}' file