作者回复: 不是哦, N是把当前处理行的下一行追加到模式空间(内存),再增加一个N指令,是再增加一行进来,不是4行
作者回复: 1 sed -i "s/\$cfg\['blowfish_secret'\] = '';/\$cfg\['blowfish_secret'\] = 'H2AxxxxxflSaaaarwVlhCKW6S2rERU3i';/" aaa.conf (用sed实现的效果不理想) 2 sed -i "33i\$cfg['TempDir'] = '/var/lib/xxxxxx/tmp';" aaa.conf 我再提供一个awk的版本 awk '{gsub(/\$cfg\[\\047blowfish_secret\\047\] = \\047\\047;/, "$cfg[\\047blowfish_secret\\047] = \\047H2AxxxxxflSaaaarwVlhCKW6S2rERU3i\\047;"); print}' aaa.conf > tmp.conf && mv tmp.conf aaa.conf awk 'NR==33{print;print "$cfg[\\047TempDir\\047] = \\047/var/lib/xxxxxx/tmp\\047;";next}1' aaa.conf > tmp.conf && mv tmp.conf aaa.conf 供你参考
作者回复: 你好, N命令规定要读取到下一行,才会继续执行它后面的s命令。 如果当前处于文件的最后一行,执行N命令后,sed会因为到达文件的结尾EOF,N命令会执行失败,导致N后面的s命令不执行。