숫자 문자열 일치를 위한 정규식 형식

숫자 문자열 일치를 위한 정규식 형식

기본적으로 위의 0-255에서 257 사이의 숫자를 일치시키려는 정규식 형식의 문자열을 일치시키고 싶습니다. 이는 256을 제외한 모든 숫자를 의미합니다.

누구든지 동일한 정규식 형식에 대해 도움을 줄 수 있습니까?

답변1

내가 질문을 이해하는 한, 이 숫자는 모두 정수입니다. 아이디어는 앞에 0이 있거나 없는 256 이외의 숫자가 포함된 항목을 일치시키고 표시하는 것입니다.

전화번호는 한 줄에 있어야 합니까?:

grep "^[0-9][0-9]*$" | grep -v "^0*256$"

( grep -v일치하는 행을 포함하는 대신 제외)

산출:

$ echo "12" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
12

$ echo "2567" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567

$ echo "256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

$ echo "0256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

$ echo "something" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

다른 구분 기호를 사용하는 경우:

예를 들어 전처리된 입력을 사용하여 위 명령과 호환 sed되도록 만들 수 있습니다. 다음은 각 쉼표 가 개행 문자( )로 대체되는 grep쉼표로 구분된 입력입니다 .\n

sed -r 's/,/\n/g'

산출:

$ echo "2567,255,256,12,something,05,0256" | sed -r 's/,/\n/g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
12
05

마지막으로, 숫자가 다른 임의의 문자와 섞여 있어야 합니다.

이 경우 추가 단계를 통해 숫자가 아닌 모든 문자를 제거할 수 있습니다.

sed -r 's/[^0-9]//g'

산출:

$ echo "2567,255,256,mama256a,papa1812b,something,05,0256" | sed -r 's/,/\n/g' | sed -r 's/[^0-9]//g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
1812
05

관련 정보