문자열에서 모든 숫자를 제거하는 정규식을 알고 있습니다.
sed 's/-[0-9].*//'
다음 문자열과 같이 숫자로 시작하고 rpm으로 끝나는 모든 문자열을 제거하고 싶습니다.
software.v2.strings.strings.3.30.rpm
software.64.7.7.0.strings.4.30.rpm
soft.1-4-4.string.44.rpm
rpm으로 끝나는 마지막 숫자만 제거해야 합니다.
그래서 돌아올 것이다
software.v2.strings.strings
software.64.7.7.0.strings
soft.1-4-4.string
무엇을 해야할지 아는 사람 있나요?
답변1
이 Perl One 라이너는 어떻습니까?
perl -pe 's/[\d.]+\.rpm$//'
작동 방식:
-p
입력 파일의 각 줄에 Perl 코드를 실행한 후 결과를 인쇄합니다.-e
펄 코드s/[\d\.]\.rpm$//
숫자와 점의 조합을 포함하지만.rpm
빈 문자열로 끝나는 문자를 바꿉니다.perldoc perlre
Perl 정규식에 대한 자세한 내용은 참고자료를 참조하세요.
답변2
숫자 주변의 모든 점을 제거하고 싶다고 가정하면 다음과 같습니다.
sed 's/[[:digit:].]*\.rpm$//'
답변3
s/(\.[0-9]+)*\.rpm$//
이것은 ".rpm"과 줄의 끝이 뒤따르는 일련의 (점과 숫자)입니다.