【发布时间】:2020-01-09 18:04:23
【问题描述】:
我编辑了帖子并听从了您的建议,我将我的工作分成了更多文件。
我想替换文件中的文本块,但在分隔符之后
<-FROM NEXT LINE->
code to be replaced
code to be replaced
code to be replaced
<-TO THE LINE ABOVE->
因为我收集网上数据,每次数据都不一样,所以要替换的代码也不一样。
这是脚本的一部分:
#!/bin/bash
set -x
########## CONFIGURATIONS ##########
live_data_url='https://www.somedata.com/api/url'
live_data_list_file=~/jjjjjjjj
file_to_modify=~/kkkkkkk
########## CONFIGURATIONS ##########
########## FUNCTIONS ##########
function upgrade() {
echo "Downloading/Upgrading traker data ..."
wget -O $live_data_list_file $live_data_url
if [[ $? -ne 0 ]]; then
echo "I can't download the data, I'll use a static one"
exit 9
fi
echo "Downloading/Upgrading done."
}
########## FUNCTIONS ##########
upgrade
sed -i -ne '/STARTINGPOINT+1LINE/ {p; r $live_data_list_file' -e ':a; n; /ENDINGPOINT-1LINE/ {p; b}; ba}; p' $file_to_modify
目标是升级$file_to_modify部分内的块:
<-FROM NEXT LINE->
code to be replaced
code to be replaced
code to be replaced
<-TO THE LINE ABOVE->
所以我搜索了一下,我找到了一个很好的起点,但我不知道如何修改它。不是使用 sed 的必要条件,也许存在更好的方法来做到这一点
其实我有2个难度
1.我需要在包含<-FROM NEXT LINE->的行之后开始,我需要停止<-TO THE LINE ABOVE->以上的行
2.$live_data_list_file在sed阶段的扩展不起作用,所以无法从文件中取数据。
你有更好的主意吗?
【问题讨论】:
-
我没有看到任何其他恶意用例。如果您真的打算将其用于应用程序开发,则需要找到一种方法来分离代码和数据。例如
json是一种轻量级的数据交换格式。 -
我能理解风险。但是我问一个更有能力的人:即使在脚本退出之前的最后调用它也这么糟糕吗?
-
edit 你的问题,所以你想要做什么的描述(从“”修改为“”)与示例输入相匹配您提供(目前不包含这两行)并在给定示例输入的情况下发布确切的预期输出。