gpt4 book ai didi

linux - 使用 sed 替换行 block

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:36 24 4
gpt4 key购买 nike

我在使用 sed 时遇到了一些问题:我需要做的是使用 sed 编辑配置文件。我想替换一行代码。

这是我的配置文件:file.php

$status = new GCollection('Status');
$sql = "SELECT status_id,nom from planning_status order by priorite asc";
$status->db_loadSQL($sql);
$smarty->assign('listeStatus', $status->getSmartyData());
// liste de tous les utilisateurs
$listeUsers = new GCollection('User');

想要成为

$status = new GCollection('Status');
$sql = "SELECT planning,nom from main_table order by priorite desc";
// liste de tous les utilisateurs
$listeUsers = new GCollection('User');
if($user->checkDroit('tasks_modify_own_task')) {
$sql = " SELECT *
FROM planning
}

我尝试过类似的方法

RIGHT=$(cat <<- "EOF"
$status = new GCollection('Status');
$sql = "SELECT status_id,nom from planning_status order by priorite asc";
$status->db_loadSQL($sql);
$smarty->assign('listeStatus', $status->getSmartyData());
// liste de tous les utilisateurs
$listeUsers = new GCollection('User');
EOF
)

NEW=$(cat <<- "EOF"
$status = new GCollection('Status');
$sql = "SELECT planning,nom from main_table order by priorite desc";
// liste de tous les utilisateurs
$listeUsers = new GCollection('User');
if($user->checkDroit('tasks_modify_own_task')) {
$sql = " SELECT *
FROM planning
}
EOF
)


sed -i 's/$RIGHT/$NEW' file.php

这是我的错误:

sed: -e expression #1, char 13: unterminated `s' command

最佳答案

这是使用 sed 进行多行替换的明智方法。将所有内容转换为十六进制!

to_hex() { xxd -p | tr -d '\n'; }
from_hex() { xxd -p -r; }
to_hex <file | sed "s/$(to_hex <<<"$RIGHT")/$(to_hex <<<"$NEW")/" | from_hex | sponge file

注:sponge是 moreutils 的一部分。

关于linux - 使用 sed 替换行 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58237695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com