bash에서 grep 하고 sed 사용에서 변수인식이 안되는데 도와주세요.
글쓴이: zykyl / 작성시간: 목, 2015/01/01 - 1:51오후
안녕하세요. 이제 막 bash를 공부중인 뉴비입니다.
아래와 같이 file1_list, file2_dat 를 test.sh 에 $1, $2로 집어넣고 file3_result를 뽑을려고 하는데요.
$1.tmp가 생성이 안됩니다.
더구나 밑의 sed 명령어도 제가 잘 이해를 못하고 있어서 도움이 필요합니다. 꾸벅
file1_list
###########################
A2b42
C23nk
E6l43
file2_data
###########################
A2b42
234050402403950
B4n2k
309785630476028
C23nk
930293084759842
D3m4l
429073984762304
E6l43
233094820938559
G4450
537867848578940
file3_result
###########################
A2b42
234050402403950
C23nk
930293084759842
E6l43
233094820938559
test.sh file1_list file2_data
###########################
#!/bin/bash ct=0 for line in $1 do echo $line echo "$line" >> file3_result let ct+=1 echo $ct grep -n $line > $1.tmp sed s/:[a-z A-Z 0-9]*//g $1.tmp > $1.tmp for line in $1.tmp do fw=$line let $fw+=1 head -n $fw | tail -n 1 >> file3_result done rm *.tmp done echo $ct"line moved"
Forums:
코드 자체가 전반적으로 잘못 짜여진 듯 싶은데요.
코드 자체가 전반적으로 잘못 짜여진 듯 싶은데요. 일단 file3_result와 같이 되는 것을 원하는 것이라면..
와 같이 하시면 되기는 합니다.
P.S.
code 중 ">>" 는 ">>"로 수정하셔야 합니다. 두루팔의 코드 태그 처리에 버그가 있어 ">>"가 ">>"로 출력이 되네요.
이렇게 해도
이렇게 해도 됩니다만..
답변이 늦어 죄송합니다.
김정균님, qiiiiiiiip님 답변 감사합니다.
코드는 grep -f file1_list file2_list -A 1 이용하여 해결하였습니다.
실은 도스에서 불러온 라인의 마지막줄에 붙는 기호? 때문에
grep에서 검색이 안되는게 제일 큰문제였습니다;;;;
dos2unix 사용하니 한번에 되더라구요;;;
댓글 달기