2016-10-14 2 views
1

내가 할 노력하고 있어요 다음 내가 할 경우애매한 문자열

그래서
obscure () { 
    local txt="$1" 
    echo "$txt" | tr '[:alnum:]' '*' 
} 

는 것을 : 어떤 정규

************** 

나는 할 수 있습니다

obscure 'mysecretstring' 

를 내가 얻을 tr, [:alnum:] 대신 '임의의 문자'를 사용 하시겠습니까?

obscure을 구현하는 더 좋은 방법이 있습니까? 마음에 떠오르는 또 다른 옵션은 sed입니다.

+0

당신이 _any 인쇄 character_을 의미하려는 경우, 당신은 할 수 '[: print :]'를 사용하십시오. –

답변

7

당신은 순수 BASH를 사용할 수 있습니다

obscure() { 
    local txt="$1" 
    echo "${txt//?/*}" 
} 

"${txt//?/*}"*

시험에 의해 $txt의 각 문자를 대체 할 그것을 :

obscure 'mysecretstring3123213213' 
************************ 

obscure mysecretstring 
************** 

obscure '[email protected]#$%^&*()_+=-' 
************** 

obscure '中文版' 
*** 
+1

매력처럼 작동합니다. 감사! – dangonfast

+1

로컬 변수도 필요하지 않습니다.'echo "$ {1 //?/*}"'는 잘 작동합니다. – chepner

+0

네, 사실 지역 변수가 필요하지 않습니다. 'tr'조차도 필요하지 않았습니다. – anubhava