我有像这样的文件内容
选择b.id为cli_id,b.login为cli_login,b.pname为cli_name, b.cname为cli_company,b.phone为cli_phone,b.email为cli_email, (从限制中选择(值/ 1048576),其中limit_name ='disk_space' 和id = b.limits_id)作为Client_Package,b.cr_date,(选择 来自极限的FROM_UNIXTIME(值,“%Y-%m-%d”) limit_name ='expiration'和id = b.limits_id)作为Client_expire, 如果(b.status = 0,'Active','Inactive')为Cli_Status,a.name为dom_name, 如果(a.status = 0,'Active','Inactive')为Dom_Package,a.cr_date为 dom_create,(从Limits中选择FROM_UNIXTIME(值,“%Y-%m-%d”) limit_name ='expiration'和id = a.limits_id)为dom_expire,(选择 (value / 1048576)来自Limits,其中limit_name ='disk_space'和 id = a.limits_id)作为Dom_Package,round((a.real_size / 1048576))as 来自域a的Dom_usage,客户b在哪里(选择 来自极限的FROM_UNIXTIME(值,“%Y-%m-%d”) limit_name ='expiration'和id = a.limits_id和 (2011-08-01)和之间的(FROM_UNIXTIME(值,“%Y-%m-%d”) '2011-12-01'))和a.cl_id = b.id group by a.id;
这一切都在一行
因为我想以这种格式单独替换日期部分
介于“2011-08-01”和“2011-12-01”之间
该脚本每周五运行,假设我在第10个月运行它意味着。
脚本需要像这样更改文件中的值
在'2011-09-01'和'2012-01-01'之间
每个月都需要以这种格式改变
在“当月-1个月”和“当月+3个月”之间
sed -i 's/between '2011-08-01' and '2011-12-01'/'between '$(date --date="- 1 month" +%Y-%m)-01' and '$(date --date="+ 3 months" +%Y-%m)-01'/g file1
在此代码中我试图找到并替换
但它显示此错误
sed:-e表达式#1,字符44:未终止的's'命令
我做了什么错误可以解释一下?
答案 0 :(得分:1)
表达式未正确引用。你从's / ...开始,但以... / g结束。那里没有引用。这就是我跑的,它工作得很好:
sed -i "s/between '[0-9-]*' and '[0-9-]*'/between '$(date --date'-1month' +%Y-%m-01)' and '$(date --date'+3months' +%Y-%m-01)'/g" file1