다시한번 부탁드립니다.
여기에 벌써 2번이나 도움을 청했는데,
제 머리가 나빠서 그런지 전혀 진전이 없네요 ㅠㅠ
지금 책상에 돌가루가 수북히;;;;;;
제가 도움을 청하고자 하는것은 이전에 제가 올렸던 거랑 비슷한 문제입니다.
자꾸 더 스크립트를 발전시킬려구 해보니 점점 복잡해지고 꼬이고
엉망이 되어버립니다.
여기저기 예제 보면서 연습도 해보는데 제가 원하는 답이 안나오네요
에휴
그래서 도움을 청합니다. ㅠㅠ
저보고 끈기가 없다느니 그런 소리 하셔도 좋습니다.
따끔한 말한마디나 프로그램 공부할때 조언좀 해주세요
그럼 제가 원하는 스크립트는
이메일 필터에 들어갈 스크립트입니다.
예를 들어 viagra라는 정상 단어는 당연히 필터링을 안하구
v l a g r a, v 1 a g r a라는 단어만 찾는 것이죠
이걸 필터에 넣을려구 스크립트로 짜고 있습니다.
정규식으로 표현만하면 되니깐요.
지금 i가 들어왔을때 L로 치환하는 거 까지 했습니다.
a="[^a-z]" # regexp for wrod b="[^a-z]?" # regexp for wrod c="\\b" # regexp for wrod d="\\s" # regexp for wrod i="[^a-km-z]" # regexp for pass L l="[^a-hj-z]" # regexp for pass I filter=filter/wrod_not_word.txt # for saved Character trick file OUT="output" NUM=0 for input in $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} do if [ $input == i ] then echo -n "$i " >> $OUT elif [ $input == l ] then echo -n "$l " >> $OUT else echo -n "$input " >> $OUT fi done #echo -n "$b" echo "" NUM=`expr $NUM + 1` read var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 < $OUT echo "$var1 $var2 $var3 $var4 $var5 $var6 $var7 $var8 $var9 $var10 $var11 $var12"
위와 같이 치환 하는 스크립트를 짰습니다.
문제는 viagra를 넣으면
\s[^a-z][^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b \bv[^a-z]?[^a-z][^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b \bv[^a-z]?i[^a-z]?[^a-z][^a-z]?g[^a-z]?r[^a-z]?a\b \bv[^a-z]?i[^a-z]?a[^a-z]?[^a-z][^a-z]?r[^a-z]?a\b \bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?[^a-z][^a-z]?a\b \bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?[^a-z]\s \bv[^a-z]i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b \bv[^a-z]?i[^a-z]a[^a-z]?g[^a-z]?r[^a-z]?a\b \bv[^a-z]?i[^a-z]?a[^a-z]g[^a-z]?r[^a-z]?a\b \bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]r[^a-z]?a\b \bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]a\b
식으로 나와야 한다는겁니다.
위 결과를 보시면 처음줄은 첫번째 문자(V)를 [^a-z]로대체
두번째는 두번째 문자 i를 [^a-z]로 대체하는 식으로.. 나갑니다.
여기까지는 제가 스크립트 두개를 돌리는식으로 했습니다. ㅠㅠ
촙5님감사합니다. ^^
그런데 여기서 i를 속이는 줄(두번째줄)에서 [^a-z]대신
[^a-km-z]를 넣고 싶습니다.
L은 [^a-hj-z]이걸루 넣고 싶습니다.
그외 다른 단어들을 속이는 경우([^a-z]가 들어간 경우)는 그대로 넣구 싶구요
제가 원하는 결과치는
\s[^a-z][^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?[^a-km-z][^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?[^a-z][^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?[^a-z][^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?[^a-z][^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?[^a-z]\s
\bv[^a-z]i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]a[^a-z]?g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]g[^a-z]?r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]r[^a-z]?a\b
\bv[^a-z]?i[^a-z]?a[^a-z]?g[^a-z]?r[^a-z]a\b
위 결과처럼 나왔으면 좋겠습니다.
볼드체로 되어있는것만 바꾸면 되는데 ㅠㅠ
이게 안되네요 ㅠㅠ
if문 3-4개 쓴거 같은데 ㅠㅠ
도와주세요 ㅠㅠ
과연 case,do,while,if,until다 써야하는지
아니면 몇개만 써야하는지 ㅠㅠ
[/code]
저라면... (워낙 단순한 성격이라)그냥 /v?agra/ 를 충족
저라면... (워낙 단순한 성격이라)
그냥 /v?agra/ 를 충족하는지 검사하고..
이런식으로 몇개 만들어놓을 것 같습니다.
보통 단어인데 금지될 위험이 있는지는 확인해야겠죠.
치환되는 문자도 보통 i, l, 1이런것들이니 그다지 경우의 수가 많지 않을 것 같아서 말입니다. :roll:
표현식은...
([Vv] *(1|l) *[Gg] *[Rr] *[Aa] *)+
정도면 어떨까 싶습니다만...
혹은 검색할 string 파일을 사전파일로 하나 두고서,
한단어씩 읽어들인담에
각 글자들의 앞뒤에 ' *'두고 글자 하나씩을 [^'문자']안에 두고
루프를 돌리는 정도는 어떨지...(여러글자를 negate하는 경우도
상정해서...)
어째 넘 어설퍼보이는데, 다른 고수님들의 명쾌한 답변 부탁드립니당^^;
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
[code:1]/v\s*[i1l]\s*a\s*g\s*r\s
/v\s*[i1l]\s*a\s*g\s*r\s*a/i
과연... :)
댓글 달기