diff --git a/sample.py b/sample.py
index ce490c6..2e069ee 100644
--- a/sample.py
+++ b/sample.py
@@ -1,4 +1,6 @@
print("Hello world")
print("Sample project")
print("git log issue")
-print("git log issue demo")
\ No newline at end of file
+print("git log issue demo")
+print("different changes in log")
+print("sample git issues")我想从git日志中删除前四行,这说明了diff的元数据。
发布于 2021-05-10 11:43:51
您可以很容易地使用sed来完成它。您可以使用,git diff | sed -n '5,$p'或更一般的
git diff | sed -n 'm,$p'
这意味着您将sed从mth行打印到文件的最后一行,而-n则禁止模式空间的自动打印。
发布于 2021-05-10 13:33:13
有大量的文本处理工具,如果您想要保留颜色,您必须告诉他们要寻找什么,这里有一个不依赖于特定的计数,但只是剥离了diff和@@之间的所有东西。
(如果您还不熟悉正则表达式,那么它们可能是令人望而生畏的,但是下面的条形码解析为\x1b[^m]*m匹配在否则的纯文本中的颜色转义,它周围的^()*表示行开始时父母中的任意数量的内容,因此^(\x1b[^m]*m)*在行的开头匹配任意数量的颜色转义。)
git log --color=always -p \
| sed -E '/^(\x1b[^m]*m)*diff/,/^(\x1b[^m]*m)*@@/ {//!d}'去掉颜色处理会使代码更容易读懂,结果也就不太好读了,
git log -p --color=never -p \
| sed -E '/^diff/,/^@@/ {//!d}'在sed中,//说“再次搜索您搜索的最后一个模式”,并且在从第一行开始作为第一行模式开始的模式范围内,在随后的所有行中以最后一行模式开始。因此,//!d作为模式范围命令删除所有不是第一行或最后一行的内容。
https://stackoverflow.com/questions/67469607
复制相似问题