bash - grep? SED?从变量中删除文本行

时间:2012-01-11 12:33:42

标签: bash sed grep text-processing

我有一个充满文本的变量,它实际上是一个git日志。 git log的每一行都有一个id(一个JIRA id),它是IPAD或MIPO。

我想过滤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

由于

3 个答案:

答案 0 :(得分:1)

git log提供了如下过滤:

git log --grep="$JIRA_KEY"

答案 1 :(得分:1)

尝试使用引号回显,如下所示:

echo "$RELEASE_NOTES"

答案 2 :(得分:0)

根据您的示例输入,您可以尝试其中任何一个 -

sed -n '/MIPO/p' filename

sed '/MIPO/!d' filename

awk '/MIPO/' filename

grep "MIPO" filename