【发布时间】:2012-07-11 17:53:34
【问题描述】:
这个答案解决了我的部分问题: 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 通话中我需要改变什么?
【问题讨论】:
-
您能附上任何差异输出示例和预期的最终结果吗?
-
当然...示例差异结果:
6715c6643 < Frau;;;Blub1;;Blob;19860314;Blub1.Blob@uni.de; --- > Frau;;;Blub2;;Blob;19860314;Blub2.Blob@uni.de; 6745d6672 < Frau;;;Blub3;;Blooob;19911002;Blub3.Blooob@uni.de; 6842d6844,6772 < Herr;Dipl.Ing;;Ping;;Pong;19860225;Ping.Pong@uni.de; < Herr;Dipl.Ing;;Ping2;;Pong;19931002;Ping2.Pong@uni.de; < Herr;Dipl.Ing;;Ping3;;Pong;19871212;Ping3.Pong@uni.de; 6851c6781 < Herr;Dr.rer.nat.;;Ying;;Yang;19460610;YING.YANG@uni.de; --- > Herr;Dr.rer.nat.;;Ying;;Yang;19460610;ying.yang@uni.de; -
我实际得到的:
Frau;;;Blub3;;Blooob;19911002;Blub3.Blooob@uni.de; Herr;Dipl.Ing;;Ping;;Pong;19860225;Ping.Pong@uni.de; -
我想得到什么:
Frau;;;Blub3;;Blooob;19911002;Blub3.Blooob@uni.de; Herr;Dipl.Ing;;Ping;;Pong;19860225;Ping.Pong@uni.de; Herr;Dipl.Ing;;Ping2;;Pong;19931002;Ping2.Pong@uni.de; Herr;Dipl.Ing;;Ping3;;Pong;19871212;Ping3.Pong@uni.de;