채택완료

파일에서 2~5째 줄만 삭제하려면?

2017-01-10 (화) 10:14:57 5,096

php언어를 이용해서  

한 php 파일에서  

2~5째 줄만 삭제하려면 어케해야 하죠?

문제는 이러한 파일이 여러개이라서

단순히 수작업으로는 곤란해서 입니다.

감사합니다. 

답변 3개 / 댓글 7개

채택된 답변
+20 포인트

쉘이 편하긴 하죠..ㅎㅎ

Copy
<?php   $filename = "test.txt";    $fp  = fopen($filename, "r") or die("파일열기에 실패하였습니다");    $line = 0;      while(!feof($fp)){        $content = fgets($fp);   if($line < 2 ||  $line > 4)   {          $buffer .=  $content;        //echo $line.":" .$content."<br>";          }   $line = $line+1;   }     fclose($fp);     $fp  = fopen($filename, "w") or die("파일열기에 실패하였습니다");         //echo $buffer;   fwrite($fp, $buffer);     fclose($fp);   ?>
 

답변에 대한 댓글 1개

2017-01-10 (화) 17:16:32
감사합니다.

간결하고 명료하게 답변 주셨네요 ^^


쉘이 편하긴 한데... recursive 작업을 해야 하는데 쉘은 recursive하게 제가 못짜요..

php로는 recursive작업소스를 로 따로 제작해놔서 그것을 쓰려하거든요


귀중한 시간 내어주셔서

다시 한번 감사드립니다.







































































































































































































































































































































.





































































































































































































































































.

현재 디렉토리(.)밑으로(하위에 있는 모든 서브디렉토리 포함) type이 file인것중,

파일명이 .php로 끝나는 모든 파일을 찾아서 다음 명령을 exec(실행)해라.

sed -i '2,5d' {} \; -> 그 찾은 파일들을 2번째줄부터 5번째줄까지 지워라(delete)

Copy
$output = `find . -type f -name '*.php' -exec sed -i '2,5d' {} \;`;echo "<pre>$output</pre>";

Is it OK?

답변에 대한 댓글 5개

2017-01-10 (화) 11:20:35
답변 감사합니다
근데 혹시 순수한 php로만 가능할까요?

그리고. 그 조건에서.원래의 파일에서 특정 줄만 없애는 것이기 때문에... 웹브라우저 출력이 아닌
원래 파일로 그대로 쓰는 과정이 필요할거 같아요 ^^

그리고 알려주신 대로 하면
해당 줄이 안지워지네요^^;
2017-01-10 (화) 11:22:13
.
2017-01-10 (화) 11:29:47
.
그냥 리눅스 터미널에서 아래명령어 치면, 0.00001초만에 끝나는 일을....
[code]
find . -type f -name '*.php' -exec sed -i '2,5d' {} \;
[/code]
2017-01-10 (화) 11:37:56
쉘 명령이 php 언어에서 작동하게 할수 있나보죠?

$lines = file("파일명.txt"); 하면 행별로 배열순서로 값이 들어가는데 이렇게 처리하면 안되나요?

foreach ($lines as $line_num => $line) {
    echo 
"Line #<b>{$line_num}</b> : " htmlspecialchars($line) . "<br />\n";
}


2~5 라인은 제외하고 다시 파일로 써주면,,,

답변에 대한 댓글 1개

2017-01-10 (화) 10:30:21
다시 써주는 것이 잘 안되어서요

답변을 작성하려면 로그인이 필요합니다.