【发布时间】:2014-09-09 12:11:10
【问题描述】:
如何使用 sed 替换文件中的字符串? 这是我的代码:
inac=`echo "\#$minute\ $hour\ $date\ $month\ $day\ $cron_user\ $comm"`
actv=`echo "$minute\ $hour\ $date\ $month\ $day\ $cron_user\ $comm"`
if [[ $stat == "active" ]]; then
sed -i "s/^.${inac}/${actv}/" filecron
active
echo "input data active to filecron"
fi
我已经尝试过:
sed -i 's/"#all all all all all root bash /media/data/looping.sh > /dev/null 2>&1"/"all all all all all root bash /media/data/looping.sh > /dev/null 2>&1"/' filecron
关键是,如果统计值处于活动状态,我只想删除“#”号。如果有更好的选择而不是使用 sed,我会很高兴。 抱歉英语不好。
【问题讨论】:
-
$stat是从哪里来的,如果是inactive,您不会将其设置为active吗? -
$stat 来自数据库。我只想删除 # where 数据库中的记录处于活动状态。
-
如果您只想添加/删除前导
#,然后编写您的模式来执行此操作。不要像那样替换(和匹配)整行。它只会使事情复杂化和混淆。 -
噢,如果让您感到困惑,我很抱歉。我对 sed 不是很熟悉。