首页 > 解决方案 > 用于将特定文本(模式)移动到不同列的 Shell 命令

问题描述

我已将 git 日志数据导出到 CSV,但是修改的文件不是占位符的一部分

例如:

git log --after=date --pretty=format:%ad,%s,%H,%ae,%an,%b --name-only

我能够以 CSV 格式获取正确的数据,但文件存在于下一行,而不是根据需要位于末尾

电流输出

Thu Apr 19 13:35:51 2018 +0000  books author  cr : xyz@ 625d76807af57776bc94e36627f352e92e00eb01    mike@mike.com   Mike    cr https://reviews/CR-1346

configuration/data/feeds/xmlcoverage/xyz.txt                    
configuration/data/feeds/xmlcoverage/log/abc.txt        

除了文件名(abc.txt 和 xyz.txt ,其余出现在单个单元格中)

有文件的占位符吗?
如果不是,我可以将文件移动到 CSV 中与其他文件相同的行吗?

标签: gitshellgithub

解决方案


有文件的占位符吗?

不。

如果不是,我可以将文件移动到 CSV 中与其他文件相同的行吗?

不是没有解析。而不是解析,我建议使用git rev-list + git show构造输出。在您的情况下,它类似于

git rev-list -after=date master |
    while read sha1; do
        subject=`git show -s --format='%ad,%s,%H,%ae,%an,%b'`
        files=`git show --format='' --name-only | tr '\n' ' '`
        echo "$subject$files"
    done

这种方法仍然有一个问题——如果主题 ( %s) 包含逗号怎么办?输出将包含太多逗号。


推荐阅读