【发布时间】:2020-09-27 11:50:47
【问题描述】:
我知道我做错了什么,但我不知道是什么。
#!/bin/bash
while IFS='' read -r line
do
new=$(git log -1 --pretty="format:%ct" $line)
sed "s|$line: .*|: $new|" file.yml
done < <(awk 'NR>1{sub(/:.*/,"");print $1}' file.yml)
file.yml 内容:
catalog/view/css/animate.css/3.1.1/animate.min.css: 1484139539
catalog/view/fonts/cinzel/fonts.css: 1484139539
catalog/view/fonts/garamondcondot-book/fonts.css: 1484139539
catalog/view/fonts/gotham-narrow/fonts.css: 1484139539
catalog/view/fonts/gotham/fonts.css: 1484139539
catalog/view/fonts/greatvibes/fonts.css: 1484139539
catalog/view/fonts/indie-flower/fonts.css: 1484139539
catalog/view/fonts/katibeh/fonts.css: 1484139539
catalog/view/fonts/lobster-two/fonts.css: 1484139539
那么,我想做什么?
我有 file.yml 一些文件源和 UNIX 时间戳(最后修改日期)。我想用git log 检查每个文件。从git log 我收到新的时间戳修改日期,我需要用新日期替换旧日期。
我的预期:
catalog/view/css/animate.css/3.1.1/animate.min.css: 1484135987
catalog/view/fonts/cinzel/fonts.css: 1484136578
我得到了什么(以及为什么我认为 sed 不能逐行工作):
: 1549375252
catalog/view/javascript/auroraoverlay/overlay.css: 1484139539
catalog/view/javascript/customselect/css/styles.css: 1484139539
catalog/view/javascript/jquery/christmasTime/christmasTime.css: 1484139539
catalog/view/css/animate.css/3.1.1/animate.min.css: 1484139539
catalog/view/fonts/cinzel/fonts.css: 1484139539
catalog/view/fonts/garamondcondot-book/fonts.css: 1484139539
catalog/view/fonts/gotham-narrow/fonts.css: 1484139539
catalog/view/fonts/gotham/fonts.css: 1484139539
catalog/view/fonts/greatvibes/fonts.css: 1484139539
catalog/view/fonts/indie-flower/fonts.css: 1484139539
catalog/view/fonts/katibeh/fonts.css: 1484139539
catalog/view/fonts/lobster-two/fonts.css: 1484139539
catalog/view/fonts/museo/fonts.css: 1484139539
catalog/view/fonts/myriad-pro/fonts.css: 1484139539
catalog/view/fonts/notera/fonts.css: 1484139539
catalog/view/fonts/sr-cart-icons/fonts.css: 1484139539
catalog/view/javascript/auroraoverlay/ageprotector.css: 1484139539
: 1484139539
catalog/view/javascript/customselect/css/styles.css: 1484139539
catalog/view/javascript/jquery/christmasTime/christmasTime.css: 1484139539
catalog/view/css/animate.css/3.1.1/animate.min.css: 1484139539
catalog/view/fonts/cinzel/fonts.css: 1484139539
catalog/view/fonts/garamondcondot-book/fonts.css: 1484139539
catalog/view/fonts/gotham-narrow/fonts.css: 1484139539
catalog/view/fonts/gotham/fonts.css: 1484139539
catalog/view/fonts/greatvibes/fonts.css: 1484139539
catalog/view/fonts/indie-flower/fonts.css: 1484139539
catalog/view/fonts/katibeh/fonts.css: 1484139539
catalog/view/fonts/lobster-two/fonts.css: 1484139539
catalog/view/fonts/museo/fonts.css: 1484139539
catalog/view/fonts/myriad-pro/fonts.css: 1484139539
catalog/view/fonts/notera/fonts.css: 1484139539
catalog/view/fonts/sr-cart-icons/fonts.css: 1484139539
catalog/view/javascript/auroraoverlay/ageprotector.css: 1484139539
catalog/view/javascript/auroraoverlay/overlay.css: 1484139539
: 1484139539
catalog/view/javascript/jquery/christmasTime/christmasTime.css: 1484139539
catalog/view/css/animate.css/3.1.1/animate.min.css: 1484139539
catalog/view/fonts/cinzel/fonts.css: 1484139539
catalog/view/fonts/garamondcondot-book/fonts.css: 1484139539
catalog/view/fonts/gotham-narrow/fonts.css: 1484139539
catalog/view/fonts/gotham/fonts.css: 1484139539
catalog/view/fonts/greatvibes/fonts.css: 1484139539
catalog/view/fonts/indie-flower/fonts.css: 1484139539
catalog/view/fonts/katibeh/fonts.css: 1484139539
catalog/view/fonts/lobster-two/fonts.css: 1484139539
catalog/view/fonts/museo/fonts.css: 1484139539
catalog/view/fonts/myriad-pro/fonts.css: 1484139539
catalog/view/fonts/notera/fonts.css: 1484139539
catalog/view/fonts/sr-cart-icons/fonts.css: 1484139539
catalog/view/javascript/auroraoverlay/ageprotector.css: 1484139539
catalog/view/javascript/auroraoverlay/overlay.css: 1484139539
catalog/view/javascript/customselect/css/styles.css: 1484139539
: 1484139539
catalog/view/css/animate.css/3.1.1/animate.min.css: 1590479145
catalog/view/fonts/cinzel/fonts.css: 1590479145
catalog/view/fonts/garamondcondot-book/fonts.css: 1590479145
catalog/view/fonts/gotham-narrow/fonts.css: 1590479145
catalog/view/fonts/gotham/fonts.css: 1590479145
catalog/view/fonts/greatvibes/fonts.css: 1590479145
catalog/view/fonts/indie-flower/fonts.css: 1590479145
catalog/view/fonts/katibeh/fonts.css: 1590479145
catalog/view/fonts/lobster-two/fonts.css: 1590479145
catalog/view/fonts/museo/fonts.css: 1590479145
catalog/view/fonts/myriad-pro/fonts.css: 1590479145
catalog/view/fonts/notera/fonts.css: 1590479145
catalog/view/fonts/sr-cart-icons/fonts.css: 1590479145
catalog/view/javascript/auroraoverlay/ageprotector.css: 1590479145
catalog/view/javascript/auroraoverlay/overlay.css: 1590479145
catalog/view/javascript/customselect/css/styles.css: 1590479145
catalog/view/javascript/jquery/christmasTime/christmasTime.css: 1590479145
【问题讨论】:
-
"s|$line: .*|: $new|"您正在输出文件内容并替换整行。 -
好的,有什么建议吗?
-
几个建议:1)将示例减少到几个文件(在那个巨大的输出块中的东西太多了),2)考虑构建一个新的时间戳文件,完成后覆盖原始文件(或将原始文件归档并将新文件重命名为
file.yml);至于从file.yml...awk -F":"{print $1}'或cut -d":" -f1中提取文件名更容易阅读/理解 -
好的,谢谢。主要问题是 sed 像循环一样更改每个文件中的时间戳。