tr REPEAT 수정자를 사용하여 문자를 반복되는 문자로 바꾸는 방법은 무엇입니까?

tr REPEAT 수정자를 사용하여 문자를 반복되는 문자로 바꾸는 방법은 무엇입니까?

나는 이 tr명령을 사용하여 다른 명령의 출력에서 ​​줄 바꿈을 탭으로 바꾸고 출력을 열 형식에 더 잘 맞추기 위해 여러 탭을 갖고 싶습니다.

10진수 또는 8진수 값이 될 수 있는 옵션이 tr있지만 다음 과 같은 간단한 줄처럼 작동하도록 할 수는 없습니다.[CHAR*REPEAT]REPEAT

echo "1234" | tr ['2'] ['x'*3]

다음을 제공합니다:

1x34

내가 예상할 때:

1xxx34

올바른 구문은 무엇입니까?

답변1

"반복" 옵션의 의미를 잘못 이해하신 것 같습니다.

tr올바르게 추론한 대로 문자 집합이 번역에 사용됩니다. 옵션으로 호출할 수 있습니다.

설정 1 설정 2

아이디어는 두 세트 모두 여러 문자를 포함할 수 있다는 것입니다. 즉, 다음과 같이 말할 수 있습니다.

tr 'abc' 'def'

a모든 것을 로 d, b모든 것을 로 e, c모든 것을 로 대체 합니다 f. 이제 때로는 여러 "입력" 문자를 동일한 "출력" 문자로 바꾸고 싶을 때가 있습니다.

tr 'abcdefghij' 'xxxxxxxxyz'

이는 ~로 , ~로 , ~ 로 a대체 됩니다 . "반복" 기능의 목적은 글쓰기를 덜 번거롭게 만들어서 글을 쓸 수 있도록 하는 것입니다.hxiyjz

tr 'abcdefghij' '[x*8]yz'

약어로. 불행하게도 이는 여러분이 원하는 작업에 맞게 설계되지 않았음을 의미합니다.

대신에, 당신은 시도 할 수 있습니다sed

$ echo "1234" | sed 's/2/xxx/g'
1xxx34

s그러면 ( )의 모든 항목(트레일) 이 로 g대체 됩니다 . 이보다 더 강력하기 때문에 (태그된 질문을 확인하세요.2xxxsed무슨 일이 일어나고 있는지에 대한 개요를 보려면) 어쨌든 살펴보는 것이 좋습니다.

관련 정보