我的问题的一部分用这个答案解决了: 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
电话中更改什么?
答案 0 :(得分: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
将打印该行。