".com" 문자열로 끝나는 모든 줄을 제외한 모든 줄을 제거합니다.

".com" 문자열로 끝나는 모든 줄을 제외한 모든 줄을 제거합니다.

스크립트를 작성 중이며 현재 입력은 다음과 같습니다.

devdb.eu-central-1.rds.amazonaws.com
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com
2.5
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com

어떻게 삭제할 수 있나요 2.5? 이 숫자는 제한 시간이므로 개발자가 조정할 수 있으므로 임의의 값이 될 수 있습니다. 감사해요.

답변1

grep을 사용하여 원하지 않는 줄을 삭제할 수 있습니다.

grep -v '^[0-9][0-9]*\(\.[0-9][0-9]*\)\?$'

확장 정규식을 사용한 더 짧은 표현:

grep -vE '^[0-9]+(\.[0-9]+)?$'

0in 이 선택 사항 인 경우 0.5예를 들어 다음을 사용할 수 있습니다.

grep -vE '^([0-9]+(\.[0-9]+)?|^\.[0-9]+)$'

답변2

나는 당신의 제목을 읽었습니다. "문자열로 끝나는 모든 줄을 제외하고 모두 제거.com"사용법은 간단해요grep

조건을 뒤집어서 "를 얻습니다.문자열로 끝나는 모든 줄 유지.com"

grep '\.com$' file

grep명령은 정규식과 일치하며 .RE의 특수 문자(모든 단일 문자와 일치)이므로 이스케이프해야 합니다. 기호 $는 다음과 같습니다.줄 끝.

답변3

당신은 그것을 사용할 수 있습니다 sed:

$ sed '/^[0-9]*\.*[0-9]*$/d' file
devdb.eu-central-1.rds.amazonaws.com
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com

답변4

또 다른 솔루션은 다음을 사용합니다 awk.

awk '/\.com$/' file

이렇게 하면 으로 끝나는 줄만 인쇄됩니다 .com.

관련 정보