나는 이 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
대체 됩니다 . "반복" 기능의 목적은 글쓰기를 덜 번거롭게 만들어서 글을 쓸 수 있도록 하는 것입니다.h
x
i
y
j
z
tr 'abcdefghij' '[x*8]yz'
약어로. 불행하게도 이는 여러분이 원하는 작업에 맞게 설계되지 않았음을 의미합니다.
대신에, 당신은 시도 할 수 있습니다sed
$ echo "1234" | sed 's/2/xxx/g'
1xxx34
s
그러면 ( )의 모든 항목(트레일) 이 로 g
대체 됩니다 . 이보다 더 강력하기 때문에 (태그된 질문을 확인하세요.2
xxx
sed
sed무슨 일이 일어나고 있는지에 대한 개요를 보려면) 어쨌든 살펴보는 것이 좋습니다.