如何使用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
重点是,我只想删除"#"如果stat值有效则签名。如果有更好的选择而不是使用sed,我会很高兴。 抱歉英文不好。
答案 0 :(得分:1)
您的代码看起来像是在做各种不必要的事情。我假设你在filecron中有一个注释掉的行:
#all all all all all root bash /media/data/looping.sh > /dev/null 2>&1
如果您要删除filecron中的所有#
,则应该只需要这样:
if [[ $stat == "active" ]]; then
sed -i '' 's/#//g' filecron
active
echo "input data active to filecron"
fi
警告:-i ''
执行就地编辑而没有备份,因此应谨慎行事。如果要进行备份,则代替''
指定文件名。