: 제가 웹에서 특정한 문서를 통째로 퍼왔는데 그곳에는 이상한 제가 원치
: 않는 그러한 내용들이 맨 위에 몇줄 맨아래 몇줄이 있네요 그것을
: 스크립트를 사용해서 없애려 하는데...
:
: -------
: -----
: -------
: 내용
: 내용
: ---
: -----
: ----
:
: 대충 문서는 저런 식입니다. 위에 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
-----------------------------------------------
갱장히 무식한 방법입니다. 죄송스럽습니다.
--
외로워라 이네몸은 뉘와함께 놀아날꼬.