sed 또는 awk: 숫자로 시작하고 rpm으로 끝나는 문자열 제거

sed 또는 awk: 숫자로 시작하고 rpm으로 끝나는 문자열 제거

문자열에서 모든 숫자를 제거하는 정규식을 알고 있습니다.

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 perlrePerl 정규식에 대한 자세한 내용은 참고자료를 참조하세요.

답변2

숫자 주변의 모든 점을 제거하고 싶다고 가정하면 다음과 같습니다.

sed 's/[[:digit:].]*\.rpm$//'

답변3

s/(\.[0-9]+)*\.rpm$//

이것은 ".rpm"과 줄의 끝이 뒤따르는 일련의 (점과 숫자)입니다.

관련 정보