为什么awk命令在我使用sed命令后只处理一次

为什么awk命令在我使用sed命令后只处理一次,awk,sed,Awk,Sed,我第一次使用这个命令: svn log -l1000 | grep '#xxxx' -B3 | awk 'BEGIN {FS="\n"; RS=""; OFS=";"} {print $1, $2}' 输出有许多行。但这不是我想要的完美。 因为有一些空行或格式为“----”的行。因此,我使用sed命令删除它们。我使用: svn log -l1000 | grep '#xxxx' -B3 | sed '/^$/d' | sed '/^--/d' | awk 'BEGIN {FS="\n"; RS

我第一次使用这个命令:

svn log -l1000 | grep '#xxxx' -B3 | awk 'BEGIN {FS="\n"; RS=""; OFS=";"} {print $1, $2}'
输出有许多行。但这不是我想要的完美。 因为有一些空行或格式为“----”的行。因此,我使用sed命令删除它们。我使用:

svn log -l1000 | grep '#xxxx' -B3 | sed '/^$/d' | sed '/^--/d' | awk 'BEGIN {FS="\n"; RS=""; OFS=";"} {print $1, $2}'
我检查了命令的输出:

svn log -l1000 | grep '#xxxx' -B3 | sed '/^$/d' | sed '/^--/d' 
看起来不错。但当awk将其作为输入文本处理时,我只看到一行输出

啊,我的意见是这样的:

------------------------------------------------------------------------
rxxxx | abc.xyz | 2016-02-01 13:42:21 +0700 (Mon, 01 Feb 2016) | 1 line

refs #kkkk [GolFeature] Fix UI 69
--
------------------------------------------------------------------------
rxxxjy | mnt.abc| 2016-02-01 11:33:45 +0700 (Mon, 01 Feb 2016) | 1 line

refs #kkkk [GoFeature] remove redundant function
--
------------------------------------------------------------------------
rxxyyxx | asdfadf.xy | 2016-02-01 11:02:06 +0700 (Mon, 01 Feb 2016) | 1 line

refs #kkkk Updated ini file
我的预期产出是:

2016-02-01 11:02:06 +0700 (Mon, 01 Feb 2016), rxxxx, mnt.abc, refs #kkkk Updated ini file ...

停止当您使用awk时,不需要添加十几个其他命令来进行预处理或后处理,只需使用一个awk命令即可。编辑您的问题,以显示示例输入(svn log-l1000的输出)和您需要创建的命令的预期输出,我们可以为您提供帮助。
grep-B3
的使用在
awk
中建模比正常情况更复杂,但绝对不需要在混合中添加
sed
。如果
grep-B3
保持不变,则每条记录(4行)与下一条记录之间用一行分隔,该行仅包含
--
(双破折号)。在我看来,这应该用作
awk
记录分隔符。然后您可以打印您感兴趣的行。
#xxxx
与数据中的
#kkk
不匹配-请小心并保持一致。您只获得一行输出的原因是您设置了
RS=“
,这意味着记录由一行或多行空行分隔。但是您的<代码> SED'/^ $/d '/COD>正在删除所有空白行。所以你只有一张唱片。一张唱片进,一张唱片出。@jas:谢谢,我想这就是原因。