정규표현식을 이용한 텍스트 문서의 재정렬...
글쓴이: junsa80 / 작성시간: 금, 2004/01/30 - 10:13오후
인제 시작인데... 첨 부터 이렇게 막혀버리다니....
다시한번 부족한 능력을 탓하며... 눈물을 흩뿌리면서 이렇게 질문올립니다
CDS coplement(join(1..10,11..20,21..30)) CDS join(31..40,41..50,51..60) CDS 61..70 CDS complement(71..80)
라는 텍스트 파일이 있습니다. 임의로 victory.lst라 하겠습니다
이것을
1 (space5칸) 10 (space5칸) C 11 20 C 21 30 C 31 40 N 41 50 N 51 60 N 61 70 N 71 80 C
이런 폼으로 재정렬을 해야합니다.
뒤의 C와 N이 나오게 되는 규칙은 complement의 유무라 하겠습니다.
하루 종일 sed와 정규표현식만으로 이를 성사시키려 했으나.... :evil: 화만나더군여....
그래서 awk도 좀 이용해서 필드나누는 것도 참조를 해봤습니다.
이 방법, 저 방법 다 생각하고 짜집고 하다보니 (모로가도 설만가도 된다고 했던가여.....ㅜㅜ) 결과는 저렇게 출력이 되지만 말도안되게 정규식이 길어지는 바람에
차라리 손으로 나누는 것이 낫겠다는 생각이 문뜩.....ㅡㅡ;
고수일수록 정규식이 짧아진다는 말이 맞나봐여....
약간의 힌트라도 좋습니다. 뭔가 새로운 아이디어가 필요한데....
Help Me!!!!! Please...... :mrgreen:
Forums:
[code:1]$ perl -pe '$c=m/complement/i?&q
fotmatting 은 적당히 쓰시면..
War doesnt determine whos right, just whos left.
굳이 sed에 replace만 사용해야 한다면..
굳이 sed에 replace만 사용해야 한다면
sed 's/^CDS \+//g; /complement/s/\([0-9]\+\)\.\.\([0-9]\+\)\(,\)\?/\1 \2 C\3/g; /complement/!s/\([0-9]\+\)\.\.\([0-9]\+\)\(,\)\?/\1 \2 N\3/g; s/,/\n/g; s/[a-z()]//g' victory.lst
와 같이 하시면 될것 같네요.
감사함돠!!
:D 가르침 감사합니다
큰 도움이 되었습니다...
저도 공부해서 당당히 답변달수 있는 사람이 되어야 겠습니다
그럼 다시한번 감사드리며.... 꾸벅
Never give up!!!
댓글 달기