예. tr
ASCII 로케일 에서 GNUtr
를 수행 할 수 있습니다 ( 어쨌든 GNU 의 경우 유일한 종류) . POSIX 클래스를 사용하거나 각 문자의 바이트 값을 8 진수로 참조 할 수 있습니다. 변환을 범위에 따라 분할 할 수도 있습니다.
LC_ALL=C tr '[:upper:]\0-\101\133-140\173-\377' '[:lower:][\n*]' <input
위의 명령은 모든 대문자를 소문자로 변환하고 소문자를 완전히 무시하며 다른 모든 문자를 줄 바꿈으로 변환합니다. 물론, 당신은 빈 줄을 많이 감습니다. 이 경우 tr
-s
queeze repeats 스위치가 유용 할 수 있지만 [:upper:]
to [:lower:]
변환 과 함께 사용하면 대문자를 압착하는 것도 가능합니다. 그런 식으로 여전히 두 번째 필터가 필요합니다 ...
LC... tr ... | tr -s \\n
...또는...
LC... tr ... | grep .
... 그리고 그렇게하는 것보다 훨씬 덜 편리합니다.
LC_ALL=C tr -sc '[:alpha:]' \\n <input | tr '[:upper:]' '[:lower:]'
... -c
문자 순서대로 알파벳 문자를 하나의 줄 바꿈으로 압축 한 다음 파이프의 다른 쪽에서 위쪽에서 아래쪽으로 변환합니다.
그것은 자연의 범위가 유용하지 않다고 말하는 것은 아닙니다. 다음과 같은 것들 :
tr '\0-\377' '[1*25][2*25][3*25][4*25][5*25][6*25][7*25][8*25][9*25][0*]' </dev/random
... 입력 바이트를 값의 확산 스펙트럼에서 모든 숫자로 변환하므로 매우 편리합니다. 낭비하지 마십시오.
변환을 수행하는 또 다른 방법은 관련이 있습니다 dd
.
tr '\0-\377' '[A*64][B*64][C*64][D*64]' </dev/urandom |
dd bs=32 cbs=8 conv=unblock,lcase count=1
dadbbdbd
ddaaddab
ddbadbaa
bdbdcadd
dd
동시에 변환 unblock
과 lcase
변환을 동시에 수행 할 수 있기 때문에 많은 작업을 전달할 수도 있습니다. 그러나 그것은 단어 당 바이트 수를 정확하게 예측할 수 있거나 적어도 unblock
각 블록의 끝에 후행 공백을 먹기 때문에 적어도 예측 가능한 바이트 수까지 각 단어를 공백으로 채울 수있는 경우에만 실제로 유용 할 수 있습니다 .