테스트 사이트 - 개발 중인 베타 버전입니다

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

프로그래머7 8년 전 조회 4,374

php언어를 이용해서  

 

한 php 파일에서  

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

 

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

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

 

감사합니다. 

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

답변 3개

채택된 답변
+20 포인트
굿
8년 전

쉘이 편하긴 하죠..ㅎㅎ

 

</p><p style="margin-left: 40px;"><?php</p><p style="margin-left: 40px;">   $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."
";
       
   }
   $line = $line+1;
   }
 
 
   fclose($fp);  
   $fp  = fopen($filename, "w") or die("파일열기에 실패하였습니다");   
   
   //echo $buffer;
   fwrite($fp, $buffer);  
   fclose($fp);   
?></p><p style="margin-left: 40px;">
 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

프로그래머7
8년 전
감사합니다.

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


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

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


귀중한 시간 내어주셔서

다시 한번 감사드립니다.







































































































































































































































































































































.





































































































































































































































































.

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

8년 전

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

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

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

 

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

 

 

Is it OK?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

프로그래머7
8년 전
답변 감사합니다
근데 혹시 순수한 php로만 가능할까요?

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

그리고 알려주신 대로 하면
해당 줄이 안지워지네요^^;
프로그래머7
8년 전
.
프로그래머7
8년 전
.
최순실
8년 전
그냥 리눅스 터미널에서 아래명령어 치면, 0.00001초만에 끝나는 일을....
[code]
find . -type f -name '*.php' -exec sed -i '2,5d' {} \;
[/code]
프로그래머7
8년 전
쉘 명령이 php 언어에서 작동하게 할수 있나보죠?

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

굿
8년 전

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

 

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


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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

프로그래머7
8년 전
다시 써주는 것이 잘 안되어서요

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

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

로그인