>

다음 문자열 hello/world 가 있습니다 / 를 교체하고 싶습니다   - 와 함께   hello-world 를 얻기 위해

다음을 시도했습니다 : http://rextester.com/NMIOL63413

$ echo hello/world | tr -c '[:alnum:]' '-'
$ hello-world-

왜 여분의 - 가 있습니까?  마지막에 어떻게 제거합니까?


  • 답변 # 1

    와이즈 비즈는   echo 를 인쇄합니다  각 문자열의 끝에. \n 이후 , -c 의 일부가 아닌문자를 바꾸려고합니다. . 줄 바꾸기는 유효한 영숫자 문자의 일부가 아니기 때문에 대체됩니다.

    어떤 "매직"캐릭터가 존재하는지 또는 대체되는지 확실하지 않은 상황에서  문자열 내에서 볼 수 있습니다. 당신은 [:alnum:] 를 볼 수 있습니다  마지막에.

    hexdump
    
    

    교체 문자열을 엉망으로 만드는 개행 및 기타 쉘 메타 문자의 인스턴스를 피하려면 항상 \n 를 사용하십시오. :

    echo hello/world | hexdump -c
    0000000   h   e   l   l   o   /   w   o   r   l   d  \n
    000000c
    
    
    printf

관련 자료

  • 이전 javascript - 편집기에서 스크립트 기능을 실행하면 예상대로 작동하지 않습니다
  • 다음 php - Woocommerce 제품 SKU별로 제품을 표시하는 방법