Docker ID만 포함된 파일이 있다고 가정해 보겠습니다.
myid.id
:
28fe2baadbe8da32ed0b99c69b11c01b2d141bc5b732b81e0960086de52fc891
my.id
내용이 정확히 64
문자 길이이고 [0-9] 및 [az] 범위(아마도 [af])의 문자만 포함되어 있는지 확인하고 싶습니다 .
- 어떻게 해야 하나요?
- 파일에 개행 문자가 포함된 경우
0x0a
이 검사에 이를 포함/제외하려면 어떻게 해야 합니까?
답변1
노력하다:
$ echo 28fe2baadbe8da32ed0b99c69b11c01b2d141bc5b732b81e0960086de52fc891 |
awk '{sub(/\r/,"")} length == 64 && /^[[:xdigit:]]+$/'
28fe2baadbe8da32ed0b99c69b11c01b2d141bc5b732b81e0960086de52fc891
아니면 대신 사용하십시오 perl
.
개행 포함:
perl -ne 'print if length == 64 and /^[[:xdigit:]]+$/'
개행 제외:
perl -nle 'print if length == 64 and /^[[:xdigit:]]+$/'
답변2
전체 라인을 greping하는 것은 어떻습니까?
grep -qxE '[[:xdigit:]]{64}' myid.id && echo "yes"
또는 (확실하지 않음) bash 특정
IFS= read -r id < myid.id
[[ ${#id} -eq 64 ]] && [[ $id =~ [[:xdigit:]]{64} ]] && echo "yes"
답변3
read s <./file
[ ${#s} -eq 64 ] &&
[ -n "${s##*[![:alnum:]]*}" ] &&
echo success\!
테스트를 다음으로 제한하기로 결정한 경우AF그런 다음 POSIX 클래스를 사용하는 모든 애플리케이션을 언급 [:alnum:]
할 [:xdigit:]
가치가 있지만 .[:alnum:]
그리고/또는 [:xdigit:]
또한 일치합니다 A-[ZF]
. 이것은 사양의 일부입니다... 이것이 문제인 경우 테스트를 하나 더 추가해야 할 수도 있습니다. 예를 들면 다음과 같습니다.
...&& [ -n "${s##*[[:upper:]]*}" ] &&...
답변4
이 시도:
echo 28fe2baadbe8da32ed0b99c69b11c01b2d141bc5b732b81e0960086de52fc891 | grep [:0-9a-z:] | wc -c