답변 3개 / 댓글 7개
채택된 답변
+20 포인트
2017-01-10 (화) 11:49:19
쉘이 편하긴 하죠..ㅎㅎ
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개
프로그래머7
2017-01-10 (화) 17:16:32
2017-01-10 (화) 11:13:13
현재 디렉토리(.)밑으로(하위에 있는 모든 서브디렉토리 포함) 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개
프로그래머7
2017-01-10 (화) 11:20:35
답변 감사합니다
근데 혹시 순수한 php로만 가능할까요?
그리고. 그 조건에서.원래의 파일에서 특정 줄만 없애는 것이기 때문에... 웹브라우저 출력이 아닌
원래 파일로 그대로 쓰는 과정이 필요할거 같아요 ^^
그리고 알려주신 대로 하면
해당 줄이 안지워지네요^^;
근데 혹시 순수한 php로만 가능할까요?
그리고. 그 조건에서.원래의 파일에서 특정 줄만 없애는 것이기 때문에... 웹브라우저 출력이 아닌
원래 파일로 그대로 쓰는 과정이 필요할거 같아요 ^^
그리고 알려주신 대로 하면
해당 줄이 안지워지네요^^;
2017-01-10 (화) 11:34:29
그냥 리눅스 터미널에서 아래명령어 치면, 0.00001초만에 끝나는 일을....
[code]
find . -type f -name '*.php' -exec sed -i '2,5d' {} \;
[/code]
[code]
find . -type f -name '*.php' -exec sed -i '2,5d' {} \;
[/code]
2017-01-10 (화) 10:29:24
$lines = file("파일명.txt"); 하면 행별로 배열순서로 값이 들어가는데 이렇게 처리하면 안되나요?
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
2~5 라인은 제외하고 다시 파일로 써주면,,,
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
간결하고 명료하게 답변 주셨네요 ^^
쉘이 편하긴 한데... recursive 작업을 해야 하는데 쉘은 recursive하게 제가 못짜요..
php로는 recursive작업소스를 로 따로 제작해놔서 그것을 쓰려하거든요
귀중한 시간 내어주셔서
다시 한번 감사드립니다.
.
.