제가 리눅스엔 초짜라 아직 정규표현식을 모릅니다.
그런데 간단한 텍스트 치환작업을 해야하는데 배워서 할 시간이 매우 부족합니다 :oops:
고수님들 한번만 도와주시면 안될까요?
어느 디렉토리안에있는 모든 파일을 읽어서
: ? 문자를 >로 바꾸는 작업을 하려고 합니다.
정규표현식 힌트를 알려드리자면,echo 'fsjk??fjdk::??:?x::xx' | sed -e 's/[:\?]/>/g' sed를 사용해서 치환을 한다면 s/[:\?]/>/g 부분이 되겠습니다.
echo 'fsjk??fjdk::??:?x::xx' | sed -e 's/[:\?]/>/g'
어느 디렉토리안에있는 모든 파일을 읽어서 : ? 문자를 >로 바꾸는 작업을 하려고 합니다.
이정도로 만들면 되겠네요. 이 스크립트에선, 변수 DIR 에서는 끝에 항상 "/"를 붙여 줘야 합니다. 알맞게 고쳐 쓰시길.
#!/bin/sh DIR=tt/ for FILE in `ls $DIR` do sed 's/?/>/g' $DIR$FILE > $DIR$FILE.tmp # mv $DIR$FILE.tmp $DIR$FILE <- 확인 작업을 위해 막아놨음. done
--- 배려하는 마음을 갖자.
음.. 해봤는데 제 질문이 잘못 된것 같습니다
.?이라는 문자두개를 < 로 바꾸는 거였는데요 -_-;;
꼭 저 패턴이 일치해야합니다
방법이 없을까요?
--------------덧붙임 ---------- 정규식이 의외로 그리 어렵지 않네요 윗분들의 힌트로 위의 스크립트를 조금 바꾸어서 해보았습니다 중간 부분을
's/\.?/</g' 로 대치를 시켰는데 원하는 대로 안되더군요 :oops: 's/\.\?/</g' 도 역시 원하는 것이 아니었습니다 분명히 둘중 하나는 되야하는것 아닙니까?
?는 보기에 어떠한 와이드카드에도 대응하지 않는데 \를 쓰는 건 아닌거 같구
C++, 그리고 C++.... 죽어도 C++
find . -type f -exec vim -c $'%s/\.?/</g\nwq\n' \{} \;
이렇게 해도 되네요... :o
find . -type f -exec perl -pi -e 's/\.\?/</g' \{} \;
이렇게 해도 되고... ;;
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
정규표현식 힌트를 알려드리자면,[code:1]echo 'fsjk??f
정규표현식 힌트를 알려드리자면,
echo 'fsjk??fjdk::??:?x::xx' | sed -e 's/[:\?]/>/g'
sed를 사용해서 치환을 한다면 s/[:\?]/>/g 부분이 되겠습니다.
Re: 정규표현식의 도움이 필요합니다
이정도로 만들면 되겠네요.
이 스크립트에선, 변수 DIR 에서는 끝에 항상 "/"를 붙여 줘야 합니다.
알맞게 고쳐 쓰시길.
---
배려하는 마음을 갖자.
음.. 해봤는데 제 질문이 잘못 된것 같습니다.?이라는 문자두개를
음.. 해봤는데 제 질문이 잘못 된것 같습니다
.?이라는 문자두개를 < 로 바꾸는 거였는데요 -_-;;
꼭 저 패턴이 일치해야합니다
방법이 없을까요?
--------------덧붙임 ----------
정규식이 의외로 그리 어렵지 않네요
윗분들의 힌트로
위의 스크립트를 조금 바꾸어서 해보았습니다
중간 부분을
's/\.?/</g' 로 대치를 시켰는데
원하는 대로 안되더군요 :oops:
's/\.\?/</g' 도 역시 원하는 것이 아니었습니다
분명히 둘중 하나는 되야하는것 아닙니까?
?는 보기에 어떠한 와이드카드에도 대응하지 않는데 \를 쓰는 건 아닌거 같구
C++, 그리고 C++....
죽어도 C++
[code:1]find . -type f -exec vim -c $'%s
find . -type f -exec vim -c $'%s/\.?/</g\nwq\n' \{} \;
이렇게 해도 되네요... :o
find . -type f -exec perl -pi -e 's/\.\?/</g' \{} \;
이렇게 해도 되고... ;;
댓글 달기