내가 다음과 같은 일을 한다면:
openssl rand 16 > file.txt
다음과 같은 파일을 얻습니다.
3e1c 37e2 96fc 7029 970c cc87 98fe 40f7
7c70 5a9a 30da 7b72 0064 9a54 ae9c ed91
공백이나 개행 문자 없이 이를 수행할 수 있는 방법이 있습니까?
답변1
tr
예를 들어 다음을 사용하여 공백과 줄 바꿈을 제거 할 수 있습니다 .
openssl rand 16 | tr -d '\n ' > file.txt
또는 플래그가 실제로 기억나지 않는 경우 tr
개행 문자를 공백으로 변환한 다음 sed
공백을 제거하는 데 사용할 수 있습니다.
openssl rand 16 | tr '\n' ' ' | sed 's/ //g' > file.txt
답변2
openssl rand 16
16진수 출력이 생성되지 않고 openssl rand -hex 16
공백도 출력되지 않으며 32바이트(64자리) 대신 16바이트(32자리 16진수)를 출력합니다. 그러나 어쨌든 공백과 개행 문자를 제거하려면 다음을 사용할 수 있습니다 tr
.
$ cat data
3e1c 37e2 96fc 7029 970c cc87 98fe 40f7
7c70 5a9a 30da 7b72 0064 9a54 ae9c ed91
$ cat data | tr -d '\n '; echo
3e1c37e296fc7029970ccc8798fe40f77c705a9a30da7b7200649a54ae9ced91
16진수가 아닌 모든 문자를 제거하려면 tr -dc 0-9A-Fa-f
또는 를 사용할 수 있습니다 tr -dc '[:xdigit:]'
.
임의의 16진수를 생성하려면 /dev/urandom
(Linux /dev/random
또는 /dev/arandom
다른 Unix 변형에서)에서 얻을 수 있습니다.
</dev/urandom od -An -tx1 | head -c 32 | tr -d ' \n'