JSON保存git log历史记录里subject带有特殊字符的转义的处理

function escape_chars {

    sed -r 's/"/\\\\"/g;s/'/\\\\'/g'   #将双引号、单引号这样的特殊字符添加转义符

}

function format {

    subject=$(git log -n1 --pretty=format:%s $1 | escape_chars)    #只对subject部分做处理

    author=$(git log -n1 --pretty=format:%aN $1)

    commit=$(git log -n1 --pretty=format:%h $1)

    date=$(git log -n1 --pretty=format:%aD $1)

    email=$(git log -n1 --pretty=format:%aE $1)

    echo "{\\"commit\\":\\"$commit\\",\\"subject\\":\\"$subject\\",\\"author\\":\\"$author\\",\\"email\\":\\"$email\\",\\"date\\":\\"$date\\"}," >> git.json

}

rm -rf git.json

for hash in $(git rev-list ${compareBranch} ^master)

do

    format $hash

done

sed -i '$s/.$//;1i\\[' git.json   #分号前去除文件里最后一个字符;分号后在文件头添加[

head -c-1 git.json >new.json

mv new.json git.json

echo "]" >>git.json    #在文件末尾添加],和上面的[联合起来形成标准的json文件

cat git.json

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容