从git log输出中替换文件中的第二个字段

问题描述 投票:1回答:1

我有一个包含所有文件路由和时间戳的文件。

xxxx/view/css/animate.css/3.1.1/animate.min.css: 1494509091
xxxx/view/fonts/cinzel/fonts.css: 1494509091
xxxx/view/fonts/garamondcondot-book/fonts.css: 1494509092
xxxx/view/fonts/gotham-narrow/fonts.css: 1494509092
xxxx/view/fonts/gotham/fonts.css: 1494509092
xxxx/view/fonts/greatvibes/fonts.css: 1494509092
xxxx/view/fonts/indie-flower/fonts.css: 1494509092
xxxx/view/fonts/katibeh/fonts.css: 1494509092
xxxx/view/fonts/lobster-two/fonts.css: 1494509092
xxxx/view/fonts/museo/fonts.css: 1494509092
xxxx/view/fonts/myriad-pro/fonts.css: 1494509092

这些时间戳不正确,所以我需要使用以下命令使用git log检查正确的最后编辑的时间戳:

git log -1 --pretty="format:%ct" xxxx/view/css/animate.css/3.1.1/animate.min.css

问题是我有500-600多个文件要检查和替换正确的时间戳。我尝试了awk,sed,但效果不佳。这是我的示例:

variables=$(git log -1 --pretty="format:%ct") 

     while read line ; do
         replacement="$variables $line"
         sed 's/,.*:/ $replacement/' <<< "$line"
     done < files.yml

另一个:

  file="files2.yml"
  files=$(cat files.yml | awk '{print $1}' | cut -d ':' -f 1)
  for i in $files;do
    new=$(git log -1 --pretty="format:%ct" $i)
    sed "s/    .*:/ $new/" files2.yml
  done

您有什么建议吗?

linux bash git awk sed
1个回答
2
投票
sed -E 's|(.*): .*|echo \1: $(git log -1 --pretty="format:%ct" \1)|e' files.yml
© www.soinside.com 2019 - 2024. All rights reserved.