2014-05-15 101 views
-2

我想寫一個腳本,可以提取數據並將其放入一個確定的格式。我有這樣的數據。數據提取和模式匹配

Person#1: 
Name: 
Age: 
House.No: 
Streetname: 

Person#2: 
Weight: 
Age: 
Name: 
Date of Birth: 

Person#3: 
Name: 
Age: 
Height: 

給定人的屬性數在所有情況下都不相同,但具有共同的屬性Age。我想一個腳本來提取人#和年齡,放在一個格式像

Person#1/Age 

Person#2/Age 

Person#3/Age etc. 

任何人都可以幫我要麼使用腳本語言如Perl,在grep和shell腳本Awk.Any有益的建議表示讚賞。

+1

請添加示例數據,所需的輸出和你的努力至今。 –

+1

看起來像一個多行正則表達式或狀態機問題... – abiessu

+0

awk'{if($ 1〜/ Person/&&/$ 2〜/ Age //)print $ 0}'; – user3641866

回答

0

如果你有這樣的數據:

Person#1: 
Name: Frank 
Age: 17 
House.No: 
Streetname: 

Person#2: 
Weight: 
Name: Peter 
Age: 15 
Date of Birth: 

Person#3: 
Name: Mara 
Age: 22 
Height: 

然後你可以使用這個awk

awk '/Person/ {p=$1} /Name/ {n=$2} /Age/ {print p,n,$2}' 
Person#1: Frank 17 
Person#2: Peter 15 
Person#3: Mara 22