특정 길이의 모든 문자열을 순차적으로 명명된 쉘 변수로 읽는 방법은 무엇입니까?

특정 길이의 모든 문자열을 순차적으로 명명된 쉘 변수로 읽는 방법은 무엇입니까?

텍스트 파일에서 특정 길이의 모든 문자열을 찾아 각 문자열을 새 변수로 저장할 수 있는 코드가 있는지 궁금합니다.

예를 들어 텍스트 파일에는 5개의 문자열이 있습니다. 그 중 2개는 3자 길이입니다. 아이디어는 8자 길이의 문자열을 모두 구문 분석하여 순서대로 변수에 넣는 것입니다(예 var1: var2, , ) var3.

어떻게 해야 하나요?

감사해요!

(궁금하신 분들을 위해 개인 키가 포함된 비트코인 ​​지갑이 여러 개 들어 있는 오래된 파일을 내 컴퓨터에서 찾아 잔액을 확인하기 위해 모두 변수로 저장하려고 했습니다.)
비트코인 ​​주소에 대한 이 게시물을 확인하세요. 어떤 문자가 포함되어 있는지 확인하려면 비트코인 ​​주소 웹사이트를 방문하세요.여기

답변1

다음은 사용 중인 모든 고유 8자 단어의 알파벳순 목록 예입니다 man bash.

bash   # clean temporary environment 
. <(man bash | tr -sc '[[:alpha:]]' '\n' |
    egrep  '^[a-z]{8}$' | sort -u | 
    nl -s '=' | sed 's/^ */var/')
echo $var20 $var80 $var200

산출:

asterisk document precedes

청소하려면 다음을 수행하십시오.

exit   # forget all those vars

노트:

  • 입력 데이터에 대한 어느 정도 절대적인 확실성둔한, 쉘이 실수로 명령으로 해석할 수 있는 위험한 내용은 포함되어 있지 않습니다. 그렇다면 완료 할당을 안전하게 사용할 수 없으며 =더 합리적인 것을 사용해야 합니다 printf -v var1 foobar.

  • man bash예는 질문에서 요구하는 것보다 더 복잡합니다. 가장 중요한 것은 스트림에 번호와 접두사를 nl추가 하고 실행하여 문자열을 변수에 할당하는 것입니다.=sedvar.

관련 정보