小弟想问下关于linux /etc/fstab 里删除某一行的问题:
LABEL=/                                    /                       ext3    defaults        1 1
LABEL=/home                                /home                   ext3    defaults        1 2
LABEL=/swap                                /swap                   ext3    defaults        1 2
tmpfs                                      /dev/shm                tmpfs   defaults        0 0
devpts                                     /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                                      /sys                    sysfs   defaults        0 0
proc                                       /proc                   proc    defaults        0 0
UUID=11111111                              /disk2                  ext3    defaults        0 0
UUID=22222222                              /disk3                  ext3    defaults        0 0
UUID=33333333                              /disk4                  ext3    defaults        0 0上面是fstab的内容
小弟想 让当UUID=22222222 的时候 然后就到fstab里面去匹配 如果有“UUID=22222222                              /disk3                  ext3    defaults        0 0”这一行 就删掉 具体应该怎么做还请各位高手指教 最后写出代码哦谢谢了

解决方案 »

  1.   

    可以用fopen打開查找,如果有就重寫文件的數據了
      

  2.   

    先读文件,然后删除了以后再写文件.$file = file("/etc/fstab");
    foreach($file as $key=>$value)
    {
      if(strpos($value, 'UUID=22222222') !== FALSE))
      {
         unset($file[$key]);
      }
    }
    file_put_contents('/etc/fstab', implode("\n", $file));
      

  3.   


    //这是我自己写的$fp = file_get_contents('/etc/fstab');    //取出$fp = strtr($fp, 'UUID=22222222', '');   //删除file_put_contents('/etc/fstab', $fp);     //写入
      

  4.   

    12楼那个有时会出错, 不知什么原因, 下面这个更好function file_modify($search_contents, $replace_contents, $filename)
    {
            $fp = file_get_contents($filename);
            $new_fp = str_replace($search_contents, $replace_contents, $fp);
            file_put_contents($filename, $new_fp);
    }//使用如下
    file_modify('UUID=22222222'', '', '/etc/fstab');