[완료]2개의연결파일에서 sed 나 awk를 이용하여....도움요청입니다.
글쓴이: shwezarl / 작성시간: 수, 2009/01/21 - 11:53오전
제가 코딩을 할줄몰라...리눅스 sed나 awk를 많이써서 이쪽으로 문의드립니다.
우선 서로 연관된 파일이 두개가 있습니다.
a라는 파일은
1:4010:0:0:0:
2:4010:0:0:0:
.
.
이런식으로 맨앞은 순서대로 넘버링된 걸로 나뉘어져있구여
b라는 파일은 a의 순서대로 매칭되어
1:44:58185633:15256987:58185421:15256898:58185069:15256946:58184769:15256952:58184508 ...
2:403:58190082:15283199:58190082:15283198:58190095:15283179:58190098:15283172 ...
.
.
b파일의 두번째 필드(첫번째줄 44)는 그 뒷부분의 58185633:15256987(좌표점) 이것을 하나로 44개가 있다는 뜻으로 쭉 되어있습니다...
여기 b파일에서 두번째 필드가 3이하 즉 좌표점이 3개이하를 지우고 다시 새로 넘버링을 하고싶습니다..
이때 a파일은 b파일에서 지워지는 줄과 동일하게 지워져서 이것또한 새로 빠진거빼고 넘버링이 되어야 싱크가
맞아야합니다.
그래서 제가 머리좀굴려서 해봤으나..b파일쪽만...
awk ' FS=":" { if (2 < $2) printf($0);print"\n" }' [파일명] > 새로받을[파일명]
이것또한 첫번째줄이 무조건 지워집니다..
잘안됩니다...도움좀..
Forums:
복잡하지 않게,
복잡하지 않게, 간단히 커맨드 두어개로 전처리를 해봤습니다.
gawk 를 이용해서 첫번째 컬럼의 숫자를 다듬으면 될 것 같네요.
OTL
감사합니다..( ' ' )( .. ) 꾸뻑~~ 추가질문좀드립니다.
sed식 중에...sed -r "s|^(.*):[012]:(.*)|\1\:DELETE_THIS|" b.txt > _b.txt
3이하라서...[012]를 주신것인지..5이하 라면 [01234]이렇게 넣는것인지..궁금하고요..
sed 정규식 ^ , (.*) [0-9*]이런 거 관련해서 좀더 자세한설명 나와있는 곳 좀 아시면
알려주세요~ 참유용한거같은데...쓸려면 이런것들을 잘몰라서...간단한부분밖에 사용을 못해
제한적인게 많습니다..ㅠㅠ
http://kr2.php.net/manual/en/
http://kr2.php.net/manual/en/pcre.pattern.php
php 매뉴얼이지만 pcre 자체에 대해 설명되어 있는 부분이므로,
읽기에 괜찮을듯 합니다.
sed 는 웬만큼 pcre (perl 과 호환되는 정규식) 와 호환됩니다.
http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&sca=&sfl=wr_subject&stx=pcre&sop=and&x=0&y=0
이것도 *-_-*
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/
https://xenosi.de/
Perl 로 하면
Perl로 하면
a.txt
b.txt
Perl코드
코드는 간단합니다. "b라는 파일은 a의 순서대로 매칭되어" 라고 했으므로
두 파일을 동시에 열어서 둘 다 한 줄씩 읽고 b파일이 특정조건을 만족할 때만
출력파일쪽으로 읽은 줄을 찍어주면 되겠죠.
<결과> aout.txt
댓글 달기