>> Delete Reply from No. 23362 article
No. RE: [질문]문서편집_300개_반복

등록 2001-03-09 22:18:00 By localhost     조회 2
이름 무정한    

		: 제가 웹에서 특정한 문서를 통째로 퍼왔는데 그곳에는 이상한 제가 원치
: 않는 그러한 내용들이 맨 위에 몇줄 맨아래 몇줄이 있네요 그것을
: 스크립트를 사용해서 없애려 하는데...
:
: -------
: -----
: -------
: 내용
: 내용
: ---
: -----
: ----
:
: 대충 문서는 저런 식입니다. 위에 4줄과 밑에 3줄 정도를 없애려면 어떻게
: 해야 할런지요? while를 사용해서 한번에 다 돌리려 하는데 문제는
: 맨 앞에거와 맨 뒤에거 찾아 오는거는 있는데 그것을 없애는 것은
: 못보았네요 bash 쉘이나 perl를 이용해서 머리/꼬리 없애는 것좀 알려주세요
:
: --
: 메롱~
무식한 방법을 하나 소개합니다.
다음의 스크립트는 한개의 파일만을 처리하는 겁니다.
 이것을 여러번 돌리면 될겁니다.
우선 테스트를 위해 input이라는 데이터파일을 다음과 같이
만듭니다.
------------ start of input file ------------
dummy_1
dummy_2
dummy_3
dummy_4
-----------------------------------------------
real_data_1
real_data_2
real_data_3
real_data_4
real_data_5
-----------------------------------------------
tail_1
tail_2
tial_3
--------------- end of input file -------------
 그리고 이것을 입력으로 받을 스크립트를 다음과 같이 만듭니다.
스크립트의 파일명을 extract라고 하겠습니다.
--------------- start of extract --------------
#!/bin/csh
#########################################################
#
# extract 삭제할헤더라인수 삭제할테일라인수 대상파일
#
#########################################################
if($#argv != 3) then
        echo "usage: $argv[0] 삭제할헤더라인수 삭제할테일라인수 대상파일"
        exit 1;
endif
 if(-e $argv[3]) then
        set in=$argv[3]
        set imsi=$argv[3]_tmp
        set out=$argv[3]_out
else
        echo "file not found"
        exit 1;
endif
 set head_status=`echo $argv[1] | perl -pi -e "s/^[0-9]+/OK/g"`
if($head_status == "OK") then
        set head_line = $argv[1]
else
        echo "head line number illegal"
        exit 1;
endif
 set tail_status=`echo $argv[2] | perl -pi -e "s/^[0-9]+/OK/g"`
if($tail_status == "OK") then
        set tail_line=$argv[2]
else
        echo "tail line number illegal"
        exit 1
endif
 head -$head_line $in > $imsi
set total_line = `wc -l $in | perl -pi -e "s/^[ ]+//s" | cut -d ' ' -f 1`
set real_line = `expr $total_line - $head_line - $tail_line`
repeat $real_line echo "" >> $imsi
tail -$tail_line $in >> $imsi
comm -3 $in $imsi | perl -pi -e "s/^	//g" > $out
rm $imsi
--------------- end of extract ----------------
 위의 파일을 extract로 저장한 후 실행가능 모드로 만듭니다.
그리고 다음과 같이 실행해봅니다.
shell_prompt> ./extract 4 3 input
 그러면 input_out이라는 이름의 결과파일이 생성됩니다.
 결과 파일의 내용은 다음과 같습니다.
-----------------------------------------------
real_data_1
real_data_2
real_data_3
real_data_4
real_data_5
-----------------------------------------------
 갱장히 무식한 방법입니다. 죄송스럽습니다.
 --
외로워라 이네몸은 뉘와함께 놀아날꼬.
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved