是否可以使用 sed in?



是否可以在 bash 中使用 sed? 例如:

list(){
cat file.yml | awk '{print $1}' | cut -d ':' -f 1 | tail -n +2
}
var2=$(cat file.yml | awk '{print $2}')
for key in $(list)
do
new=$(git log -1 --pretty="format:%ct" $key)
sed 's/$key/$new/' file.yml
done

我认为这是错误的,因为每个周期 sed 都想改变每一行。我的意思是不可能使用 sed for 吗?

文件.yml:

catalog/view/css/animate.css/3.1.1/animate.min.css: 1494509091
catalog/view/fonts/cinzel/fonts.css: 1494509091
catalog/view/fonts/garamondcondot-book/fonts.css: 1494509092
catalog/view/fonts/gotham-narrow/fonts.css: 1494509092
catalog/view/fonts/gotham/fonts.css: 1494509092
catalog/view/fonts/greatvibes/fonts.css: 1494509092
catalog/view/fonts/indie-flower/fonts.css: 1494509092

循环的每次迭代都会读取file.yaml,并向 stdout 发送file.yaml的更新版本,其中文本字符串$key的所有出现都被输出中的文字字符串$new替换(因为你将参数包装在单引号之间sed(。file.yaml本身永远不会改变。你最终会得到一堆写到 stdout 的file.yaml"副本"。

所以从字面上回答你的问题:是否可以在循环中使用sed?是的,当然。没有任何法律会禁止它。你真的以合理的方式使用它吗?我不知道,因为我不知道你想要什么(这也不是问题的一部分(。

更新:通过合并@Socowi给出的评论来修复答案。

最新更新