2012-01-11 80 views
1

我有一個變量充滿文本,其實際上是一個git日誌。 git日誌的每一行都有一個id(JIRA id),它是IPAD或MIPO。bash - grep? SED?從變量中刪除文本行

我要過濾的git的輸出,僅顯示一個或另一個

到目前爲止,我有這樣的:

RAW_NOTES=`git log $LAST_REVISION..master --pretty=format:"%h %ar %s"` 
echo "Raw git notes: $RAW_NOTES" 

然後我就可以使用

RELEASE_NOTES=`echo "$RAW_NOTES" | grep "$JIRA_KEY"` 
echo $RELEASE_NOTES 

然而過濾。 ... RAW_NOTES有很好的格式和換行符,RELEASE_NOTES失去了我所有的換行符。

如何保存格式或使用其他文本過濾命令刪除某些匹配的文本行。

例如輸入:

IPAD did this 
IPAD did that 
MIPO Im another comment 
IPAD something else 
IPAD bla bla 
MIPO hello 
MIPO doodle do 

,我想輸出是

MIPO Im another comment 
MIPO hello 
MIPO doodle do 

由於

+0

[相關問題](http://stackoverflow.com/q/2414150/183066) – jcollado 2012-01-11 12:45:52

回答

1

git的日誌提供濾波像這樣:

git log --grep="$JIRA_KEY" 
+0

好一個。很好,謝謝。 – bandejapaisa 2012-01-11 12:46:46

+0

僅供參考,在打印$ RELEASE_NOTES之前,您需要設置IFS,如'IFS ='\ n''。 – dimir 2012-01-11 12:52:49

1

嘗試呼應引號,像這樣:

echo "$RELEASE_NOTES" 
+0

這也解決了我的問題,但我可能也會過濾源代碼 - git log,就像@ Pumbaa80所建議的那樣。謝謝 – bandejapaisa 2012-01-11 12:49:37

0

根據您的樣品輸入你可以試試這些人 -

sed -n '/MIPO/p' filename 

sed '/MIPO/!d' filename 

awk '/MIPO/' filename 

grep "MIPO" filename