기본적으로 위의 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