0

这个答案解决了我的问题的一部分: Threadlink ,但我的问题的一个重要部分没有解决!

使用后

diff a.csv b.csv | grep -E -A1 '^[0-9]+d[0-9]+$' | grep -v '^--$' | sed -n '0~2 p' | sed -re 's,^< (.*)$,\1,g'

有几次我发现了一些东西。有时会删除多个后续行。如果只删除了一行,则会发现如下内容:

3663d3661

对于多行,它是:

3724,3725d3718

所以我把diff电话改为:

diff a.csv b.csv | grep -E -A1 '^[0-9]+\,*[0-9]*d[0-9]+$' | grep -v '^--$' | sed -n '0~2 p' | sed -re 's,^< (.*)$,\1,g'

这适用于多个已删除行中的第一行。

我的问题是:在这种情况下,我怎样才能获得所有删除行(可能是以下 5 行)?我必须在diff通话中进行哪些更改?

4

1 回答 1

0
diff a.csv b.csv | sed -n '/^[0-9]\+d[0-9]*/,/^[0-9]\+[^d]*$/{/^[0-9]\+/d;s/^< //;p}'

会这样做。

/^[0-9]\+d[0-9]*/,/^[0-9]\+[^d]*$/

将找到被删除的字符串范围

/^[0-9]\+/d

将全部删除6842d6844,6772

s/^< //

将替换所有<行首

并将p打印该行。

于 2012-07-11T09:53:34.380 回答